supertest test express中间件

use*_*014 6 javascript testing node.js express supertest

发现以下关于如何在Express中测试中间件的提示:
https://github.com/visionmedia/express/blob/master/test/req.xhr.js
我想知道为什么我的测试总是通过.直到我注意到,当我从快递复制测试时,他们表现得一样.我试过拧紧它们但是它们不断传递:https: //github.com/visionmedia/express/blob/master/test/req.xhr.js

我在这里缺少什么?

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();
  })
})
Run Code Online (Sandbox Code Playgroud)

sha*_*zhu 2

你没有错过任何事情,这是req.xhr永远不会失败的快速测试。

如果运行您的示例,您将看到错误堆栈跟踪,但测试通过,因为:

  1. 它在测试过程中没有发现错误。
  2. 没有错误信息传递给done()函数调用。

我的修复在PR #2053中:

  1. 用于expect()将断言错误返回到.end().
  2. 将任何错误信息传递给done().