这是我的代码:
const Config = require('Config');
export const getPayments = (username: string) => {
if (username === undefined) {
throw new Error('username is undefined');
}
const envEndpoint = Config.paymentsEndpoint;
const endpoint: string = `${envEndpoint}/${username}`;
return fetch(endpoint);
};
我想要模拟的是Config对象。我基本上想拦截需要在我的测试文件中调用并将其替换为具有该paymentsEndpoint值的对象。我正在使用jest,但也有sinon作为嘲笑的选项。
我仍然相当新的单元测试和开玩笑,所以请原谅我使用不正确的术语
答案 0 :(得分:2)
在之前的测试文件中导入getPayments
模块,您可以使用jest.mock
来模拟配置模块。
所以它看起来像
/* getPayments.test.js */
jest.mock('Config', () => {
return { paymentsEndpoint: 'y' }; // return your fake Config obj here
});
import getPayments from './getPayments'; // or whatever the correct file path is
describe(() => {
[ ... your tests ]
});
以下是jest.mock
文档:https://facebook.github.io/jest/docs/en/jest-object.html#jestmockmodulename-factory-options