gpt4 book ai didi

node.js - sinon 否认一个 stub 被调用,即使它被调用了

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:23 24 4
gpt4 key购买 nike

我正在使用 sinon 来 stub 函数 res.status ,在下面的两个单元测试中都调用了 res.status,一个通过,另一个失败,我什至调试并逐行查看函数正在被调用,但 sinon 失败并说该函数没有被调用。

这是我正在测试的 Controller (ActivityController.js)

exports.findActivity = (req, res) => {
ActivityService.findActivity(req.params.id, req.user).then(result => {
res.status(200).json({result: result})
}).catch(err => {
res.status(500).json({msg: err.message})
})
}

这是单元测试,第一个测试很好,但第二个测试没有

    it('should return Activity obj with status 200', async () => {
expectedResult = activity
sinon.stub(ActivityService, 'findActivity').resolves(expectedResult)
await ActivityController.findActivity(req, res)
sinon.assert.calledWith(ActivityService.findActivity)
expect(res.status.calledOnce).to.equal(true)
sinon.assert.calledWith(res.status, 200)
})
it('should return status 500 on server error', async () => {
sinon.stub(ActivityService, 'findActivity').rejects()
await ActivityController.findActivity(req, res)
sinon.assert.calledWith(ActivityService.findActivity, req.params.id, req.user)
expect(res.status.calledOnce).to.equal(true)
sinon.assert.calledWith(res.status, 500)
})

我调试了第二个单元测试,看到 ActivityController 通过 catch 并调用 res.status(500)但单元测试在 res.status.calledOnce 中失败

最佳答案

您是否在每次测试之间重置 res.status stub ? red.usedOnce 可能不正确,因为它可能被调用多次一次。

关于node.js - sinon 否认一个 stub 被调用,即使它被调用了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55009637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com