我对 javascript 和 jest 也很陌生,我的测试中有这个用例
jest.mock('./db' , ()=>{
saveProduct: (product)=>{
//someLogic
return
},
updateProduct: (product)=>{
//someLogic
return
}
})
这很好用,我可以针对它运行我的测试,但我仍然想在我的测试用例中断言 updateProduct 被调用了 3 次,我该如何实现?
答案 0 :(得分:0)
这是一个如何测试这些模拟 fn 的示例
const saveProductMock = jest.fn((product)=>{
//someLogic
return
});
const updateProductMock = jest.fn((product)=>{
//someLogic
return
})
jest.mock('./db' , ()=>{
saveProduct: saveProductMock,
updateProduct: updateProductMock
})
expect(saveProductMock).toHaveBeenCalled()
expect(saveProductMock.mock.calls[0][0]).toBe(product)
答案 1 :(得分:0)
你在一个导出的模块上运行 mock,然后在你导入模块的任何地方,它都会被模拟。
import db from './db'; // import db
jest.mock('./db', () => ({ // I think you want to return an object
saveProduct: (product) => {
//someLogic
return
},
updateProduct: (product) => {
//someLogic
return
}
}));
// assert
expect(db.updatePorduct).toHaveBeenCalledTimes(3);