【发布时间】:2020-11-21 21:22:06
【问题描述】:
我创建了一个名为 API 的类,它是 Axios 的简单包装器
export class API {
static get = async (route: string, version: string = API_VERSION) => {
try {
return await axios.get(`${BASE_URL + version}${route}`);
} catch (error) {
throw error;
}
};
}
我正在尝试测试get方法的catch分支:
我试过了:
describe('API Throws Errors', () => {
beforeEach(() => {
// axios.get.mockImplementation(() => Promise.reject('rejected'));
jest.mock('axios', () => ({
get: jest.fn().mockReturnValue(Promise.reject('error'))
}));
});
it('get fails', async () => {
await expect(() => {
API.get(GROUPS.url());
}).rejects.toEqual('error');
});
afterEach(() => {
jest.clearAllMocks();
});
});
【问题讨论】:
-
您可以尝试将 get 包装在箭头函数中吗?
await expect(() => { API.get(“bad_url”) }).toThrowError(“whatever”) -
当我这样做时它说“函数没有抛出”
-
jest.mock('axios', () => ...在 beforeEach 中效率低下。如果它已经是一个模拟,你可以继续使用axios.get.mockImplementation...。
标签: javascript jestjs axios