mux-fetch
Version:
183 lines (160 loc) • 4.06 kB
text/typescript
import { fetchWebapi, setGlobalConfig, globalConfigMap } from "../src";
const url = `https://maimai.cn/web/pingback?type=pc&device_id=0bb8c8ab5b2d45996d1a9ab0e35da215`;
describe("fetch", () => {
it("base", done => {
fetchWebapi(url, {
method: "GET"
}).then(res => {
expect(res).toBeDefined();
done();
});
});
it("get request start time and end time", done => {
fetchWebapi(url, {
method: "GET"
}).then(res => {
expect(res.result).toBeDefined();
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
done();
});
});
it("set global prefix", done => {
const url = `/web/pingback?type=pc&device_id=0bb8c8ab5b2d45996d1a9ab0e35da215`;
const prefix = `https://maimai.cn`;
setGlobalConfig({
prefix
});
fetchWebapi(url, {
method: "GET"
}).then(res => {
expect(res.result).toBeDefined();
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
done();
});
});
it("set global fetchOption", done => {
globalConfigMap.clear();
const url = `/web/pingback?type=pc&device_id=0bb8c8ab5b2d45996d1a9ab0e35da215`;
const prefix = `https://maimai.cn`;
setGlobalConfig({
prefix,
fetchOption: {
method: "GET"
}
});
fetchWebapi(url).then(res => {
expect(res.result).toBeDefined();
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
done();
});
});
it("set global requestInterceptor", done => {
globalConfigMap.clear();
const url = `/web/pingback?type=pc&device_id=0bb8c8ab5b2d45996d1a9ab0e35da215`;
const prefix = `https://maimai.cn`;
const fn = ({ api, options }) => {
return {
api: `${prefix}${api}`,
options: {
...options,
method: "GET"
}
};
};
setGlobalConfig({
interceptor: {
requestInterceptor: [fn]
}
});
fetchWebapi(url).then(res => {
expect(res.result).toBeDefined();
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
done();
});
});
it("set global responseInterceptor", done => {
globalConfigMap.clear();
const fn = res => {
return {
...res,
a: 1
};
};
setGlobalConfig({
interceptor: {
responseInterceptor: [fn]
}
});
fetchWebapi(url, {
method: "GET"
}).then(res => {
expect(res.result).toBeDefined();
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
expect(res.a).toBe(1);
done();
});
});
it("set global mult responseInterceptors", done => {
globalConfigMap.clear();
const fn = res => {
return {
...res,
a: 1
};
};
const fn1 = res => {
return {
...res,
b: 2
};
};
setGlobalConfig({
interceptor: {
responseInterceptor: [fn, fn1]
}
});
fetchWebapi(url, {
method: "GET"
}).then(res => {
expect(res.a).toBe(1);
expect(res.b).toBe(2);
expect(res.result).toBeDefined();
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
done();
});
});
it("set global errorInterceptor", done => {
const errUrl = "xxx";
const errMethod = "POST";
const fn = ({ error, options }) => {
expect(options.url).toEqual(errUrl);
expect(options.args.options.method).toEqual(errMethod);
expect(error.toString()).toEqual(
"Error: only absolute urls are supported"
);
done();
};
setGlobalConfig({
interceptor: {
errorInterceptor: [fn]
}
});
fetchWebapi(errUrl, {
method: errMethod
});
});
it("fast api get ", done => {
fetchWebapi.get(url).then(res => {
expect(res.result).toBeDefined();
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
done();
});
});
});