Я пытаюсь автоматизировать некоторые REST-сервисы с помощью SuperTest. Служба является вызовом POST, который внутренне вызывает метод GET другого стороннего сервиса. Я пытаюсь смоделировать сторонние сервисы, чтобы повысить эффективность тестирования и сократить время его выполнения.
Я использую nock для насмешки стороннего сервисного вызова.
Мой первоначальный сервисный вызов выглядит как -
curl -X POST \
http://internal-url.com/path \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-d '{
"key1": "value1",
"key2": "value2"
}'
Эта услуга выполняет вызов сторонней службы, которая выглядит как -
curl -X GET \
'http://3rdparty-url.com/value1' \
-H 'Content-Type: application/json' \
-H 'cache-control: no-cache' \
-H 'key2: value2'
Я издевался над сервисом, используя nock in beforeTest, как -
nock('http://3rdparty-url.com')
.get('/value1')
.reply(200, 'domain matched');
Когда я звоню напрямую в эту стороннюю службу с помощью SuperTest, она возвращает поддельный ответ. Однако моя цель - сделать POST-вызов и перехватить вызов сторонней службы с заглушкой, чего не происходит. Я достиг подобного в мире Java, используя WireMock . Возможно ли это сделать с помощью nock?
Мой тест выглядит как -
var payload = {"key1": "value1", "key2": "value2"};
describe('Test third party Service', function () {
it('should return success on POST /path service', function (done) {
supertest('http://internal-url.com')
.post('/path')
.send(payload)
.expect(200)
.expect('Content-type', /application\/json/)
.expect(function (response) {
console.log(response.body);
//test fails as third party server is not available and mock doesn't intercept
})
.end(done);
});