supertest test express middleware

谁都会走 提交于 2019-12-01 16:18:16

问题


found the following hint on how to test middleware in express:
https://github.com/visionmedia/express/blob/master/test/req.xhr.js
I was wondering why my tests were always passing. Until I noticed that when i copied the test from express they behaved the same. I tried screwing them up but they keep passing: https://github.com/visionmedia/express/blob/master/test/req.xhr.js

What am I missing here?

it('should return true when X-Requested-With is xmlhttprequest', function(done){
  var app = express();

  app.use(function(req, res){
    req.xhr.should.be.false; //set to false, to fail the test but it still passes
    res.end();
  });

  request(app)
  .get('/')
  .set('X-Requested-With', 'xmlhttprequest')
  .end(function(res){
    done();
  })
})

回答1:


You didn't miss anything, it is the express test req.xhr that will never fail.

If running your example, you will see the error stacktrace but the test passes because:

  1. it didn't catch the error during test.
  2. no error information passed to done() function call.

My fixes are in PR #2053:

  1. use expect() to return the assertion error to .end().
  2. pass any error information to done().


来源:https://stackoverflow.com/questions/22816121/supertest-test-express-middleware

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!