mux-fetch
Version:
110 lines (102 loc) • 2.6 kB
text/typescript
import { fetch, setGlobalConfig, setBlockConfig } from "../src";
const url = `https://maimai.cn/web/pingback?type=pc&device_id=0bb8c8ab5b2d45996d1a9ab0e35da215`;
describe("fetch", () => {
it("base", done => {
fetch(url, {
method: "GET"
}).then(res => {
expect(res.result).toEqual("ok");
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
done();
});
});
it("fast api get ", done => {
fetch.get(url).then(res => {
expect(res.result).toEqual("ok");
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
done();
});
});
/***
* 区块的配置会和全局的配置合并
* 基础类型 为 区块 覆盖 全局
* 复杂类型 为 区块 合并 全局,且全局先执行
*/
it("combine config", done => {
const url = `/web/pingback?type=pc&device_id=0bb8c8ab5b2d45996d1a9ab0e35da215`;
const prefix = `https://maimai.cn`;
setGlobalConfig({
prefix: "xxxxxx",
responseHandle: async res => {
const data = await res.response.clone().json();
return {
...data,
...res.options
};
},
fetchOption: {
a: 1
},
interceptor: {
requestInterceptor: [
res => {
expect(res.api).toEqual(`${prefix}${url}`);
expect(res.options).toEqual({
method: "GET",
a: 1,
b: 1
});
return { ...res, request1: 1 };
}
],
responseInterceptor: [
res => ({
...res,
response1: 1
})
]
}
});
setBlockConfig("app", {
prefix,
fetchOption: {
b: 1
},
responseHandle: async res => {
const data = await res.response.clone().json();
return {
...data,
...res.options,
test: 1
};
},
interceptor: {
requestInterceptor: [
(res: any) => {
expect(res.request1).toEqual(1);
return res;
}
],
responseInterceptor: [
res => ({
...res,
response2: 2
})
]
}
});
fetch("app", url, {
method: "GET"
}).then(res => {
expect(res.result).toEqual("ok");
expect(res.startTime).toBeDefined();
expect(res.endTime).toBeDefined();
expect(res.test).toEqual(1);
expect(res.response1).toEqual(1);
expect(res.response2).toEqual(2);
done();
});
});
});