Files
weRequest/test/api/request.test.ts

181 lines
4.6 KiB
TypeScript
Raw Normal View History

import request from "../../src/api/request";
import config from "../../src/store/config";
import { initail } from "./init";
beforeAll(() => {
// 以下所有测试用例执行前,需提前执行初始化
initail();
});
describe("normal request", () => {
test("send a success request in callback way with duration report", (done) => {
expect.assertions(1);
const normalRequest = {
url: "https://sample.com/success",
showLoading: true,
report: "reportkey",
success: (res) => {
expect(res.isSuccess).toBe(true);
done();
},
};
request(normalRequest);
});
test("send a cgi error request in callback way", (done) => {
expect.assertions(1);
const cgiErrorRequest = {
url: "https://sample.com/cgiError",
fail: (res) => {
expect(res.data.errcode).toBe(-100);
done();
},
};
request(cgiErrorRequest);
});
test("send a http error request in callback way", (done) => {
expect.assertions(1);
const httpErrorRequest = {
url: "https://sample.com/httpError",
fail: (res) => {
expect(res.statusCode).toBe(500);
done();
},
};
request(httpErrorRequest);
});
test("send a success request and response is not json", (done) => {
expect.assertions(1);
const notJsonRequest = {
url: "https://sample.com/successButNotJson",
success: (res) => {
expect(res.isSuccess).toBe(true);
done();
},
};
request(notJsonRequest);
});
test("send a success request with checkSession", (done) => {
config.doNotCheckSession = false;
expect.assertions(1);
const normalRequest = {
url: "https://sample.com/success",
success: (res) => {
expect(res.isSuccess).toBe(true);
done();
},
};
request(normalRequest);
})
// test("send a request when session is expired", (done) => {
// expect.assertions(1);
// const expiredRequest = {
// url: "https://sample.com/sessionExpired",
// success: (res) => {
// expect(res.isSuccess).toBe(true);
// done();
// },
// };
// request(expiredRequest);
// })
// test("send a network error request in callback way without fail definition", async () => {
// expect.assertions(1);
// wx.__mock__.modalIsShow = false;
// const cgiErrorRequest = {
// url: "https://sample.com/cgiError",
// success(){}
// };
// await request(cgiErrorRequest);
// expect(wx.__mock__.modalIsShow).toBe(true);
// done();
// });
test("send a network error request in callback way", (done) => {
expect.assertions(1);
const networkErrorRequest = {
url: "https://sample.com/networkError",
fail: (res) => {
expect(res.errMsg).toContain("request:fail");
done();
},
};
request(networkErrorRequest)
});
});
describe("mock request", () => {
test("try to get mock data", (done) => {
expect.assertions(1);
const mockRequest = {
url: "https://sample.com/mock",
success: (res) => {
expect(res.mock).toBe(true);
done();
},
};
request(mockRequest);
});
});
describe("cache request", () => {
test("send a success request in cache way", (done) => {
expect.assertions(1);
const mockRequest = {
url: "https://sample.com/success",
cache: true,
success: (res) => {
expect(res.isSuccess).toBe(true);
done();
},
};
request(mockRequest);
});
test("check response set in storage successfully", () => {
expect(wx.__mock__.storage["https://sample.com/success"]).not.toBeFalsy();
});
test("send a success request while already has cached", async (done) => {
expect.assertions(2);
const mockRequest = {
url: "https://sample.com/success",
cache: true,
success: (res, cache) => {
if (cache) {
expect(res.isSuccess).toBe(true);
expect(cache.isCache).toBe(true);
done();
}
},
};
request(mockRequest);
});
});
describe("request with promise way", () => {
test("send a http error request in promise way", async () => {
expect.assertions(1);
const httpErrorRequest = {
url: "https://sample.com/httpError",
catchError: true,
};
await request(httpErrorRequest).catch((error) => {
expect(error).toEqual(new Error("500"));
});
});
test("send a cgi error request in promise way", async () => {
expect.assertions(1);
const cgiErrorRequest = {
url: "https://sample.com/cgiError",
catchError: true,
};
await expect(request(cgiErrorRequest)).rejects.toThrow();
});
});