开玩笑检查模块函数调用计数

时间:2021-03-10 08:23:28

标签: javascript typescript jestjs

我对 javascript 和 jest 也很陌生,我的测试中有这个用例

    jest.mock('./db' , ()=>{
    saveProduct: (product)=>{
    //someLogic
    return
    },
    updateProduct: (product)=>{
    //someLogic
    return
    }
})

这很好用,我可以针对它运行我的测试,但我仍然想在我的测试用例中断言 updateProduct 被调用了 3 次,我该如何实现?

2 个答案:

答案 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);