axios-miniprogram/test/core/InterceptorManager.test.ts

62 lines
1.5 KiB
TypeScript
Raw Normal View History

2020-04-20 22:33:15 +08:00
import InterceptorManager from '../../src/core/InterceptorManager';
describe('测试 src/core/InterceptorManager.ts', () => {
it('实例化', () => {
const interceptor = new InterceptorManager();
const executor = jest.fn();
interceptor.forEach(executor);
// executor 不应该被执行
expect(executor.mock.calls.length).toBe(0);
});
it('注册和取消注册', () => {
const interceptor = new InterceptorManager();
const executor1 = jest.fn();
const executor2 = jest.fn();
2020-07-23 10:52:25 +08:00
const id1 = interceptor.use(() => void 0);
const id2 = interceptor.use(() => void 0);
2020-04-20 22:33:15 +08:00
interceptor.forEach(executor1);
// executor1 应该被执行了两次
expect(executor1.mock.calls.length).toBe(2);
interceptor.eject(id1);
interceptor.eject(id2);
interceptor.forEach(executor2);
// executor2 不应该被执行
expect(executor2.mock.calls.length).toBe(0);
});
it('倒序遍历', () => {
const interceptor = new InterceptorManager();
let id = 0;
// 应该后被执行
interceptor.use((id) => expect(id).toBe(1));
// 应该先被执行
interceptor.use((id) => expect(id).toBe(0));
interceptor.forEach(({ resolved }) => {
resolved(id++);
}, 'reverse');
});
it('异常', () => {
const interceptor = new InterceptorManager();
2020-04-23 10:46:45 +08:00
interceptor.use(
2020-07-23 10:52:25 +08:00
() => void 0,
2020-04-23 10:46:45 +08:00
(error: any) => {
expect(error).toBe('error');
return Promise.reject(error);
}
);
2020-04-20 22:33:15 +08:00
2020-04-23 10:46:45 +08:00
interceptor.forEach(({ rejected }) => rejected?.('error'));
2020-04-20 22:33:15 +08:00
});
});