Всегда добирайся до всех "зацепи в тесте и не можешь это исправить - PullRequest
1 голос
/ 22 мая 2019
before(function (func: (...args: any[]) => any) {
  app = express();

  // prepare environment
  sandbox = sinon.createSandbox();

  // stub
  sandbox.stub(app, "post").callsFake(() => {
    return Promise.resolve("send a post");
  });

  ingestEventStub = sandbox.stub(IngestController.prototype, "ingestEvent").callsFake(function () {
    return Promise.resolve({
      success: true,
      message: "anymessage"
    });
  });

  eventRoutesV1 = EventRoutesV1(app, express);
  ingestController = new IngestController();
});

beforeEach(function () {
  sandbox.resetHistory();
});

afterEach(function () {
  sandbox.restore();
});


it('should send 200 back and pubsub message when call /event ', function (done) {

  const httpBody = {
    "id": "id",
    "version": "version",
    "creationTime": "creationTime",
    "environment": "environment",
    "name": "name",
    "tenantId": "tenantId",
    "payloadType": "payloadType",
    "payloadVersion": "payloadVersion",
    "payload": {}
  };

  request(app)
    .post('/event/ingestEvent')
    .send(httpBody)
    .end((err, res) => {
      expect(res.body).to.equal({ success: true });
      expect(res.status).to.equal(HTTP_STATUS_CODES.OK);
      done();
    }).then(done, done)
});

Ошибка:

1) "before all" hook for "should send 200 back and pubsub message when call /event "

Error: Timeout of 50000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. 
      at listOnTimeout (internal/timers.js:531:17)
      at processTimers (internal/timers.js:475:7)

Я не знаю, почему всегда возникает эта ошибка, и я не могу найти предпосылку, которая не решена

1 Ответ

0 голосов
/ 22 мая 2019

Функция, переданная в before, включает параметр с именем func.

Если функция, переданная в before, включает параметр, предполагается, что это параметр done.

Поскольку func (рассматривается как параметр done) никогда не вызывается, время ожидания теста в ловушке before истекло.

Похоже, вам не нужен параметр done в вашем обратном вызове before, поэтому просто удалите func, и это предотвратит истечение времени теста:

before(function () {  // <= remove "func"
    app = express();
    ...
});
...