很明显,我在这里误解了一些关于笑话如何运作的东西:要测试的代码:
const target = () => {
if (filter()) () => 'hi';
}
const filter = () => false;
module.exports = {
target, filter
}
在下面的代码中,我希望filter()
的值为true
,这样当下面的代码调用target
时,target
返回hi
。这可能吗?如果可能,如何模拟/测试?如果不可能,如何模拟/测试?
const index = require('./index')
jest.mock('./index.js', () => {
const o = jest.requireActual('./index.js')
return {
...o, filter: jest.fn(() => true)
}
});
test('test', () => {
const x = index.target();
console.log(index.filter()) // true
console.log(x) // undefined ~ would like to see it return 'hi' instead
});
2条答案
按热度按时间wb1gzix01#
你的模仿起作用了。
在
target()
中,您不返回任何内容,但是() => 'hi'
过于复杂。8yparm6h2#
我认为在index.js中,目标函数必须返回值。请看下面的代码。
并在测试文件中,重新定义目标函数。