Nock - как логировать статус каждого запроса?

Я хотел бы иметь возможность видеть каждый запрос, перехваченный перехватчиком, и видеть, ответил ли он или находится в ожидании. Я использую scope.persist(true) для каждого перехватчика. Как это может быть сделано?


person JoeTidee    schedule 25.09.2019    source источник


Ответы (1)


Scopes генерируют события, когда Interceptor соответствует запросу и когда этот Interceptor отвечает полезной нагрузкой. https://github.com/nock/nock#events

Обратный вызов для каждого из этих событий передается Interceptor в качестве аргумента.

Я не совсем уверен, что такое вопрос «посмотрите, ответил ли он или находится в ожидании», но что-то вроде этого должно вас заинтересовать:

const scope = nock('http://example.test')
  .get('/')
  .reply(200)

scope.on('request', (req, interceptor) => {
  console.log('interceptor matched request', interceptor.uri)
});
scope.on('replied', (req, interceptor) => {
  console.log('response replied with nocked payload', interceptor.uri)
});
person Matt R. Wilson    schedule 25.09.2019
comment
Когда я реализую приведенное выше предложение, я получаю TypeError: scope.on is not a function, если я не укажу его сразу после scope = nock(baseUrl);, т.е. если я сделаю scope.persist();scope.delay(delay); до scope.on(...);, то я увижу вышеуказанную ошибку. - person JoeTidee; 26.09.2019
comment
Странный. delay стоит на перехватчике, а не на прицеле. Так что я бы ожидал ошибки там. github.com/nock/nock#delay-the-response - person Matt R. Wilson; 26.09.2019