我想编写一个单元测试,检查是否调用了一个函数,但是我得到了错误'submitDetailsSubmitDetails发电子邮件:AssertionError:预期sendEmail已被精确调用过一次,但被调用了0次。]]
从我可以看到我的函数commitDetails.submitDetails清楚地运行了函数sendEmail.sendEmail,但这是说它从未被调用过。我也尝试过仅使用'spy.Call'而不是namedOnce,但得到的结果相同。
测试文件:
const submitDetails = require('../src/scripts/submitDetails') const sendEmail = require('../src/lib/sendEmail') describe('submitDetails', function () { let sandbox = null before(() => { sandbox = sinon.createSandbox() }) afterEach(() => { sandbox.restore() }) describe('submitDetails', () => { let mockParams, result beforeEach(async () => { sandbox.spy(sendEmail, 'sendEmail') }) it('sendEmail', () => { expect(sendEmail.sendEmail).to.have.been.calledOnce() }) }) })
SubmitDetails.js(正在测试的文件)
const { sendEmail } = require('../lib/sendEmail')
const submitDetails = {}
submitDetails.submitDetails = query => {
return sendEmail(query)
}
module.exports = submitDetails
<<您没有在测试用例中调用submitDetails.submitDetails()
方法。这是工作示例: