我正在使用jest来测试路由控制器。控制器方法类似于
async function MyController(req, res, next){
if (condition1) {
// render logic
}
if (condition2) {
res.redirect(SOME_CONSTANT);
}
}
如何断言已调用response.redirect?我试过了
const req = { query: {} };
const res = { redirect: jest.fn() };
expect(res.redirect).toHaveBeenCalled();
但是,除非我真的能用reponse
模仿jest.mock()
,否则这显然无法奏效。我可以模拟基本的http响应模型吗?
答案 0 :(得分:0)
只需检查它被调用的次数:
const myController = require('../my-controller')
describe('my-controller', () => {
let res
beforeEach(() => {
res = {
redirect: jest.fn(),
}
})
test('should call res.redirect', async () => {
await myController({}, res)
expect(res.redirect.mock.calls.length).toEqual(1)
})
})