У меня есть служба nodejs, которая при вызове своей конечной точки выполняет http-вызов для службы B. Я добавляю в свой сервис приемочный тест для проверки интеграции.
Использование nock.back
in *Режим 1004 * работает отлично, но когда я устанавливаю режим на record
, тест не работает во второй раз, когда я его запускаю, хотя прибор генерируется правильно.
Мне нужно запустить тесты в record
режим, потому что в некоторых средах, где будет выполняться тест, служба B. будет недоступна.
Вот мой тест:
nock.back.setMode('record');
nock.back.fixtures = path.join(__dirname, '..', 'fixtures');
it('validates the contract for at least one hotel', (done) => {
return nock
.back('myfixture.json', defaultOptions)
.then(({ nockDone }) =>
request(app)
.get('/myapi/route')
.then((res) => {
expect(res.status).toBe(200);
console.log(res.body);
done();
})
.then(nockDone),
)
.then();
});
При запуске без генерируемого myfixture.json
до этого тест проходит, и прибор генерируется правильно.В следующий раз, когда я запускаю тест (с прибором там), тест завершается неудачно с:
NetConnectNotAllowedError: Nock: Not allow net connect for "127.0.0.1:52027/myapi/route
С другой стороны, если вместо режима record
я устанавливаю режим dryrun
, тестпроходит всегда, и тело ответа является правильным, поэтому вызовы службы B выполняются правильно.