Sinon / sandbox测试表明从未调用过该函数

问题描述 投票:0回答:1

我想编写一个单元测试,检查是否调用了一个函数,但是我得到了错误'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()方法。这是工作示例:

node.js unit-testing sinon sinon-chai
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.