【发布时间】:2019-10-22 04:17:50
【问题描述】:
我遇到了一个我自己无法解决的问题,也许你们中的一些人也遇到了同样的问题。
让我告诉你我想要做什么,这是模拟:
let mockConfig = {name: 'dude'};
jest.mock('../../../configManager', () => mockConfig);
configManager 是我要测试的函数的依赖项。
效果很好,但我想在另一个测试中更改 configManager 的返回对象,以便测试的函数表现不同。
让我告诉你,这是我正在测试的功能:
const config = require('../../../configManager');
module.exports = () => {
if (config.name === 'dude') {
do stuff;
}
if (config.name === 'dudette') {
do something else;
}
因此,通常情况下,我想将 config.name 更改为 'dudette' 以便能够测试我的函数的第二部分。
当然,当我想使用导入的函数执行此操作时,我只是这样做:
let mockJsonQueryResult = { value: 'stuff' };
jest.mock('json-query', () => jest.fn(() => mockJsonQueryResult));
然后在测试中,我直接给mockJsonQueryResult设置了另一个值:
mockJsonQueryResult = { value: 'hotterStuff' };
但是我没有找到任何方法来使用返回对象的依赖项,以及返回函数的依赖项,没问题。
有没有办法做到这一点?
提前致谢!
编辑:这与@Dor Shinar 建议的how to change jest mock function return value in each test? 不同,因为他的问题是模拟一个函数,即使它在返回对象中它仍然是一个函数,我只想更改里面的一个值返回的对象。
【问题讨论】:
标签: jestjs