我无法模拟简单的依赖关系生成器函数。
//generatorFunction.js
export default ()=>({execute: (arg1)=>Promise.resolve(arg1)})
//actualFunction.js
import generate from 'generatorFunction'
export default (arg1)=>generate(arg1)
//actualFunction.test.js
import actualFunction from './actualFunction'
import generatorFunction from './generatorFunction'
const resultingGeneratedFunction = generatorFunction();
jest.mock('generatorFunction', ()=>jest.fn(()=>({execute: ()=>Promise.resolve()})))
it('calls generateFunction', function(done){
actualFunction(1).then(()=>{
expect(resultingGeneratedFunction.execute).toHaveBeenCalledOnce()
done()
})
})
永远不会调用哪些错误作为执行,但是当我在actualFunction中控制日志时,看到执行被调用。
答案 0 :(得分:0)
问题是,开玩笑不知道你在测试的某个地方使用了诺言。您要么使用async/await
返回承诺。看看docs
import actualFunction from './actualFunction'
import generate from 'generatorFunction'
jest.mock('generatorFunction', ()=>jest.fn(()=>({execute: ()=>Promise.resolve()})))
it('calls generateFunction', function(){
return actualFunction(1).then(()=>{
expect(generateFunction.execute).toHaveBeenCalledOnce()
})
})
import actualFunction from './actualFunction'
import generate from 'generatorFunction'
jest.mock('generatorFunction', ()=>jest.fn(()=>({execute: ()=>Promise.resolve()})))
it('calls generateFunction', async function(){
const value = await actualFunction(1)
expect(generateFunction.execute).toHaveBeenCalledOnce()
})