Как сделать последующие звонки на тот же URL через Nock с другим кодом состояния - PullRequest
0 голосов
/ 04 марта 2019

Проблема: я хочу смоделировать ситуацию, в которой при одном и том же http-вызове я получаю разные результаты.Конкретно в первый раз не получается.В некоторой степени это похоже на возможности Sinon stub.onFirstCall(), stub.onSecondCall() Ожидание: я ожидал, что если я буду использовать once при первом вызове и twice при втором вызове, я смогудля достижения вышеизложенного.

nock( some_url )
    .post( '/aaaa', bodyFn )
    .once()
    .reply( 500, resp );
nock( some_url )
    .post( '/aaaa', bodyFn )
    .twice()
    .reply( 200, resp );

1 Ответ

0 голосов
/ 05 марта 2019

Правильный способ состоит в том, чтобы просто вызвать Nock дважды.

nock( some_url )
    .post( '/aaaa', bodyFn )
    .reply( 500, resp );
nock( some_url )
    .post( '/aaaa', bodyFn )
    .reply( 200, resp );

Способ, которым работает Nock, заключается в том, что каждый вызов регистрирует перехватчик для some_url.Фактически, при первом вызове some_url будет очищен первый перехватчик и т. Д.

, как указано в документах :

При установке перехватчикадля URL и того перехватчика, который он используется, он удаляется из списка перехватчиков.Это означает, что вы можете перехватывать 2 или более вызовов на один и тот же URL и возвращать разные вещи для каждого из них.Это также означает, что вы должны установить один перехватчик для каждого запроса, который вы собираетесь получить, в противном случае nock выдаст ошибку, потому что этот URL отсутствует в списке перехватчиков.Если вы не хотите, чтобы перехватчики удалялись по мере их использования, вы можете использовать метод .persist ().

...