Как решить 'MaxListenersExceededWarning' в рамках модульного теста? - PullRequest
0 голосов
/ 03 февраля 2020

Я запускаю модульное тестирование, которое проходит через массив конечных точек и тестирует каждую из них. Поскольку их более 10, я получаю следующую ошибку:

(узел: 50021) MaxListenersExceededWarning: Возможна утечка памяти EventEmitter. Добавлено 11 близких слушателей. Используйте emitter.setMaxListeners () для увеличения лимита

Теперь я уже обнаружил, что мне нужно установить maxListeners на значение, превышающее 10. Я хотел бы установить для него количество конечных точек, которые я имею тестирование. Вот как мой код выглядит в настоящее время:

const assert = require('assert')
const request = require('supertest')
const { EventEmitter } = require('events')

const endpointList = [
  'endpoint1',
  'endpoint2',
  'endpoint3',
  ...
]

describe('test all endpoints', function () {
  it('test each endpoint', function () {
    return Promise.all(
      endpointList.map(endpoint => {
        return request(server)
          .get(endpoint)
          .then(res => {
            // do stuff
            assert.ok(something)
          })
      })
    )
  })
})

Теперь я намерен установить maxListeners как длину массива endpointList:

...
const emitter = new EventEmitter()
emitter.setMaxListeners(endpointList.length)
...

Теперь возникает вопрос: где я должен это сделать? Это за пределами блока? Внутри раньше? В другом месте? Я попробовал первые два предложения, но предупреждение все еще появляется. Так, где это должно быть сделано?

...