Как получить имя запроса через объект Nock

В тот момент в моем тестовом коде, где я проверяю, что все nocks были вызваны, у меня есть полуполезное сообщение об ошибке, которое выводится, если nock не был вызван (поскольку сообщение об ошибке по умолчанию бесполезно):

try {
  assertions(data, result);
  if (assertNock !== null) {
    // Expect that all mocked calls were made
    if (nock.isDone() !== !!assertNock) {
      console.error('One or more of your Nock matchers was never called.');
    }
    expect(nock.isDone()).toBe(!!assertNock);
  }
  done();
} catch (err) {
  ...
}

Однако я хотел бы иметь возможность указать, какой вызов не был сделан. Но я не могу найти способ получить эту информацию из объекта nock, который выглядит так:

{ [Function: startScope]
  emitter:
   EventEmitter {
     domain: null,
     _events: {},
     _eventsCount: 0,
     _maxListeners: undefined },
  define: [Function: define],
  loadDefs: [Function: loadDefs],
  load: [Function: load],
  enableNetConnect: [Function: enableNetConnect],
  disableNetConnect: [Function: disableNetConnect],
  removeInterceptor: [Function: removeInterceptor],
  activeMocks: [Function: activeMocks],
  pendingMocks: [Function: pendingMocks],
  isDone: [Function: isDone],
  isActive: [Function: isActive],
  activate: [Function: activate],
  cleanAll: [Function: cleanAll],
  recorder:
   { rec: [Function: record],
     clear: [Function: clear],
     play: [Function] },
  back: { [Function: Back] setMode: [Function], fixtures: null, currentMode: 'dryrun' },
  restore: [Function: restore]
}

Как я могу получить полезную/идентифицирующую информацию о запросе, который не был сделан из объекта nock?


person Matthew Herbst    schedule 26.05.2017    source источник


Ответы (1)


Согласно документации, перехватчики удаляются, как только они были вызваны. Зная это, можно использовать nock.activeMocks(), который вернет массив элементов, которые все еще активны. Если вы добавили .persist() к любому из узлов, они все равно останутся в списке. В этом случае вы можете использовать nock.pendingMocks(), который будет возвращать только те nocks, которые еще не были вызваны.

    nock.activeMocks(); // [ 'GET https://www.example.com:443/fake/url', 'POST https://sts.amazonaws.com:443/' ]
    nock.pendingMocks(); // [ 'GET https://www.example.com:443/fake/url' ]
person openam    schedule 28.02.2018