У меня есть пример конечной точки, когда к ней отправляется запрос, я делаю еще один запрос к сторонней службе, которая временами оказывается неисправной. Я хочу смоделировать неисправность этой службы, чтобы мои тесты могли быть актуальными. Вот пример кода
it('should handle malfunctional 3rd party service', done => {
Frisby.post(Endpoints.randomEndpoint, {
email: '[email protected]',
firstName: 'John',
lastName: 'Doe'
})
.expect('status', 400)
.expect('jsonTypes', Common.Types.ErrorModel)
.done(done);
});
На моей стороне сервера у меня что-то вроде ..
app.post('randomEndpoint', (req, res) => {
request('http://3rdpaty.com/api')
.then(data => {
res.send(200);
})
.catch(err => {
res.send(500);
})
})
Моя цель - добиться отклика от третьего сервиса. Любые идеи?





Вы можете смоделировать свой HTTP-запрос, используя библиотека nock
nock('http://3rdpaty.com/')')
.post('/api/', {
email: '[email protected]',
firstName: 'John',
lastName: 'Doe'
})
.reply(400, { id: '123ABC' });
Вы можете запустить mock server локально и запрашивать локальный фиктивный сервер всякий раз, когда должны запускаться тесты.
Ознакомьтесь с документацией json-сервер или mockserver, чтобы узнать, как запустить фиктивный сервер в node.js.
Запуск макета сервера локально (согласно mockserver):
var http = require('http');
var mockserver = require('mockserver');
http.createServer(mockserver('mocks')).listen(9001);
Добавьте файл в каталог mocks/api с именем GET.mock (для запросов GET) или POST.mock (для запросов POST) и укажите результат вызова API:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
{
"Accept-Language": "en-US,en;q=0.8",
"Host": "headers.jsontest.com",
"Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
"Accept":
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
}
Измените URL-адрес стороннего сервера всякий раз, когда вы запускаете тесты (используйте порт своего фиктивного сервера):
app.post('randomEndpoint', (req, res) => {
request('http://127.0.0.1:9001/api')
.then(data => {
res.send(200);
})
.catch(err => {
res.send(500);
})
})
Лучшее решение для изменения URL-адреса третьей стороны - указать среду TEST с использованием переменных env и получить URL-адрес с помощью файлов конфигурации в зависимости от среды, в которой работает ваша программа. например если ваша программа работает в среде Production, тогда URL-адрес должен быть http://3rdpaty.com/api, но если ваша программа работает в среде TEST, тогда URL-адрес должен быть http://127.0.0.1:9001/api.