gpt4 book ai didi

javascript - 在 Jest 中模拟类模块

转载 作者:行者123 更新时间:2023-11-30 20:48:45 25 4
gpt4 key购买 nike

嘿, Jest 模拟 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 改用模拟的 apicurrentOutput 始终返回实际的 api 调用而不是模拟响应。

我是否遗漏了什么或做错了什么?

最佳答案

你必须在调用 jest.mock 时使用相对路径:

jest.mock('../../config/api');

关于javascript - 在 Jest 中模拟类模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48409522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com