【发布时间】:2021-08-28 23:08:39
【问题描述】:
我正在为 Express 应用程序中的控制器编写单元测试。我在嘲笑res.send 方法,并希望在用户传递这样的有效数据时调用它:
describe('>> CONTROLLERS -- Exercise -- deleteExercise', () => {
let res
beforeEach(() => {
res = {
send : jest.fn()
}
});
it('sends error as response if id was not passed', () => {
const req = {
body : {}
}
deleteExercise(req, res)
expect(res.send).toHaveBeenCalledWith({
error : 'please pass id field to delete the exercise.'
})
})
it('calls the deleteExercise class method if the id was passed', () => {
const req = {
body : {
id : 1234
}
}
deleteExercise(req, res)
expect(Exercise.deleteExercise).toHaveBeenCalledWith(1234)
expect(res.send).toHaveBeenCalled()
// expect(res.send).toHaveBeenCalledWith(mockData)
})
})
第一个测试运行良好,但第二个不是。我添加了控制台来检查 res.send 是否被调用,在代码中它被调用,但 Jest 对 expect(res.send).toHaveBeenCalled() 测试失败。你能帮我解决我在这里缺少的东西吗...
【问题讨论】:
-
deleteExercise() 函数是什么样的?
-
@ArpanKc 它调用数据库并进行删除调用。并返回状态
okay。但我现在已经嘲笑它返回一个空对象。 -
给我们关于错误信息的信息。
-
@SubratoPatnaik 测试失败。错误表示未调用函数。
-
如果您提供console.log 错误信息,对我的学习和理解会很有帮助。而且我不是那个否决这个问题的人
标签: javascript express jestjs