【发布时间】:2020-10-11 14:29:21
【问题描述】:
我有一个使用 Express 创建的 API 应用,在控制器上使用此功能
/** UserController.ts */
--------------------------
public static get = async (req: Request, res: Response): Promise<void> => {
try {
const user = await UserModel.findById(<<id>>)
if (user) {
res.status(200).json(<I200Response>{ msg: 'user data', data: user })
}
} catch (e) {
res.status(500).json(<I500Response>{ error: e.message })
}
}
我正在尝试使用 sinon 测试“catch block”的工作原理,但我不明白。这是我尝试过的数百个测试之一:
/** User.specs.ts */
---------------------
it('Internal server error', async () => {
const stubReq = chai.request(BASE)
const stub = sinon.stub(stubReq, 'get').throws(new Error('stub: Internal server error'))
const r = await request.get(API.info).set('Authorization', userToken)
stub.reset()
expect(r).to.have.status(500)
return expect(r.body).to.have.property('error').that.is.equal('stub: Internal server error')
})
但响应的状态为 200 并获取所需的数据。
有什么想法吗?
【问题讨论】:
标签: express try-catch integration-testing sinon chai-http