Я использую sinon для заглушки функции res.status
, res.status вызывается в обоих модульных тестах ниже, один проход и другой сбой, я даже отладил и прошел построчно, и увидел, что функция вызывается, но sinonдает сбой и говорит, что функция не была вызвана.
это контроллер, который я тестирую (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