Jest断言调用了response.redirect

时间:2018-03-06 22:21:07

标签: node.js unit-testing express jestjs

我正在使用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响应模型吗?

1 个答案:

答案 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)
  })
})