У вас есть несколько незначительных проблем в вашем тесте.
Во-первых, значение, переданное nock
, должно быть просто origin и не должно включать часть пути. Вместо этого, в вашем случае, get
и post
должны иметь полный путь.
Во-вторых, вы хотите удалить encodedQueryParams: true
. Этот флаг означает, что перехватчик создается с использованием уже закодированных параметров запроса / поиска, однако вы называете его как .query({k: 'v'})
, который предварительно не закодирован.
Последняя проблема что ты не говорил Мокко, когда тест закончился. Таким образом, он заканчивал тестирование до того, как получил все его результаты. Есть два способа добиться этого. Либо примите аргумент в обратном вызове it
, done
- это номенклатура. Или сделайте обратный вызов asyn c и ждите ваших запросов. Я реализовал последнее ниже.
it('should hit correct endpoints', async () => {
const scope = nock('https://my.host.com')
.get('/a/b/c/d')
.reply(200)
.post('/a/b/x/y', {
some: 'payload'
})
.query({k: 'v'})
.reply(200);
await testFn();
scope.isDone().should.be.true();
});