Супертест тест экспресс промежуточного


Нашел следующую подсказку о том, как тестировать промежуточное ПО в express:
https://github.com/visionmedia/express/blob/master/test/req.xhr.js
мне было интересно, почему мои тесты всегда проходят. Пока я не заметил, что, когда я копировал тест из express, они вели себя так же. Я пытался испортить их, но они продолжают проходить мимо.: 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();
  })
})
1 6

1 ответ:

Вы ничего не пропустили, это экспресс-тест req.xhr это никогда не подведет.

При запуске примера вы увидите ошибку stacktrace, но тест пройдет, потому что:

  1. он не поймал ошибку во время теста.
  2. информация об ошибке не передается вызову функции done().

Мои исправления находятся в PR #2053:

  1. используйте expect() для возврата ошибки утверждения в .end().
  2. передайте любую информацию об ошибке в done().