【发布时间】:2020-08-26 00:21:19
【问题描述】:
我不知道如何测试axios 包装函数。我应该模拟什么?
我有createApiClient.js 文件:
import createApiClient from '../createApiClient';
import axios from 'axios';
function createApiClient(config = {}) {
const client = axios.create(config);
client.interceptors.response.use((response) => response.data,
(error) => {
if (error.response) {
throw error.response.data;
} else {
throw new Error('Ошибка во время соединения с сервером! Попробуйте повторить попытку позже.');
}
});
return client;
}
export default createApiClient;
我还使用此函数创建了具体的client.js 文件:
import createApiClient from '../createApiClient';
const request = createApiClient({
baseURL: process.env.VUE_APP_AUTH_API_URL,
});
async function logIn(username, password) {
const { token } = await request.post('login/', {
username,
password,
});
return token;
}
// other functions...
export { logIn, register, getUserInfo };
如何测试logIn()和client.js中的其他功能?特别是,我想知道axios.create()、interceptors等。
我尝试了这个和一些变化:
import createApiClient from '@/api/createApiClient';
import { logIn } from '@/api/auth/client';
const token = 'token';
describe('Тестирование API аутентификации', () => {
test('log in success', async () => {
const request = createApiClient();
request.post = jest.fn(() => Promise.resolve(token));
const response = await logIn('foo', 'qwerty');
response.toBe({ token });
});
});
【问题讨论】:
标签: javascript api unit-testing jestjs axios