【发布时间】:2018-01-23 19:36:54
【问题描述】:
嘿,在开玩笑地模拟 http 请求时遇到问题: 这是我的文件夹结构和文件:
.
├── config
│ ├── __mocks__
│ │ └── api.js
│ └── api.js
├── handlers
│ ├── __tests__
│ │ └── getUser.js
│ └── getUser.js
config/__mocks__/api.js
const api = {
get: (endpoint, config) =>
new Promise(resolve => {
resolve({ data: { type: 'test' } });
}),
};
export default api;
config/api.js
import axios from 'axios';
import { SERVER } from './const';
const api = axios.create({
baseURL: SERVER.PROD,
timeout: 10000,
headers: {
Accept: 'application/json',
},
});
export default api;
handlers/getUser.js
import api from '../config/api';
import { ENDPOINT } from '../config/endpoints';
import {serverResponseExtractor, errorHandler} from '../util';
const getUsers = params => {
const result = api.get(ENDPOINT).then(
serverResponseExtractor,
),
errorHandler,
);
return result;
};
export default getUsers;
handlers/__tests__/getUser-test.js
import getVods from '../getUser';
jest.mock('api');
test('getUsers> Returns valid User object', async () => {
const currentOutput = await getUser(params);
expect(currentOutput).toMatchSnapshot();
});
我基本上是在尝试用模拟版本替换 getUser 上的api。
我为此苦苦挣扎了很长时间,我无法让getUser 改为使用模拟的api。
currentOutput 总是返回实际的 api 调用而不是模拟响应。
我有什么遗漏或做错了吗?
【问题讨论】:
标签: javascript unit-testing mocking jestjs