Использование помощника по контексту лаборатории для HapiJS вызывает ошибку - PullRequest
1 голос
/ 10 марта 2019

Я написал модульный тест для HapiJS, используя lab

beforeEach(async ({ context }) => {
  context.server = new Hapi.Server();
  await context.server.register(Inert);
});

test('/ rootPath is served', async ({ context }) => {
  await context.server.register({
    plugin: require('../server/statics'),
    options: { rootPath }
  });
  const res = await context.server.inject({
    method: 'GET',
    url: '/'
  });

  expect(res.statusCode).to.equal(200);
});

И я был удивлен, когда тест завершился неудачей с этой ошибкой.

Method Set.prototype.add called on incompatible receiver #<Set>

at Set.add (<anonymous>)
at module.exports.internals.Core.registerServer (/home/xxxx/node_modules/hapi/lib/core.js:217:24)

Проблемакажется, с оператором для добавления сервера в instances.

// /home/xxx/node_modules/hapi/lib/core.js
registerServer(server) {

    if (!this.root) {
        this.root = server;
        this._defaultRoutes();
    }

    this.instances.add(server); // <-- line 217
}

, который был объявлен как набор.

    this.dependencies = [];                                                         
    // Plugin dependencies
    this.events = new Podium(internals.events);
    this.heavy = new Heavy(this.settings.load);
    this.instances = new Set(); // <-- line 68

Мне интересно, почему эта ошибка происходити если я использую контекст неправильно.Конечно, я могу использовать переменную в области видимости модуля в качестве обходного пути, но я думал, что контекстный помощник был создан, чтобы избежать необходимости делать это .

...