Статья Nock: идеальный инструмент для тестирования HTTP-взаимодействий! была впервые опубликована в пятницу, 6 января 2023 г., в Блоге технических разработчиков. Для получения новейшего актуального контента, только что из печи, посетите https://techdevblog.io и подпишитесь на нашу рассылку!
Добро пожаловать в этот туториал по использованию библиотеки тестирования JavaScript Nock! Nock — это фантастический инструмент для тестирования HTTP-взаимодействий в вашем коде, и в этом руководстве мы рассмотрим различные концепции, которые вам необходимо знать, чтобы начать работу с Nock, а также продемонстрируем несколько примеров и лучших практик. с помощью API фактов о кошках.
Обо всем по порядку, начнем с установки Nock. Вы можете установить Nock с помощью npm, выполнив следующую команду:
npm install nock
После того, как Nock установлен, вы можете потребовать его в своем коде следующим образом:
const nock = require('nock');
Теперь, когда Nock установлен и требуется в нашем коде, давайте поговорим о различных концепциях, которые вам необходимо знать, чтобы эффективно использовать Nock.
Имитация HTTP-запросов
Одним из основных применений Nock является имитация HTTP-запросов. Это полезно при тестировании, поскольку позволяет вам контролировать ответ HTTP-запроса, а не полагаться на фактический ответ сервера.
Чтобы имитировать HTTP-запрос с Nock, вы можете использовать функцию nock()
, которая принимает HTTP-метод, URL-адрес и объект ответа в качестве аргументов. Вот пример того, как вы можете использовать nock()
для имитации GET-запроса к API фактов о кошках:
nock('https://cat-fact.herokuapp.com')
.get('/facts')
.reply(200, {
text: 'Cats are amazing creatures.'
});
Это имитирует запрос GET к конечной точке /facts
API фактов о кошках и возвращает ответ с кодом состояния 200 и телом, содержащим текст «Кошки — удивительные существа».
Соответствующие запросы
В дополнение к указанию метода HTTP и URL-адреса запроса, который вы хотите имитировать, вы также можете использовать Nock для сопоставления определенных заголовков запроса или параметров запроса. Например, вы можете захотеть имитировать ответ на запрос GET к конечной точке /facts
API фактов о кошках, но только если запрос включает определенный заголовок Authorization
. Вы можете сделать это следующим образом:
nock('https://cat-fact.herokuapp.com', {
reqheaders: {
Authorization: 'Bearer abc123'
}
})
.get('/facts')
.reply(200, {
text: 'Cats are amazing creatures.'
});
Это будет имитировать ответ на запрос GET к конечной точке /facts
, но только если запрос включает заголовок Authorization
со значением Bearer abc123
.
Вы также можете использовать Nock для сопоставления параметров запроса таким же образом. Например, если вы хотите имитировать ответ на запрос GET к конечной точке /facts
, но только если запрос включает параметр запроса limit
со значением 5
, вы можете сделать это:
nock('https://cat-fact.herokuapp.com')
.get('/facts')
.query({
limit: 5
})
.reply(200, {
text: 'Cats are amazing creatures.'
});
Лучшие практики
Теперь, когда вы знакомы с основами использования Nock для имитации HTTP-запросов, давайте поговорим о нескольких рекомендациях, которые следует учитывать при использовании Nock в ваших тестах.
Во-первых, важно убедиться, что вы очищаете моки после каждого теста. Это можно сделать с помощью метода .done()
в прицеле nock, например:
const scope = nock('https://cat-fact.herokuapp.com')
.get('/facts')
.reply(200, {
text: 'Cats are amazing creatures.'
});
// Run your test code here
scope.done();
Это гарантирует, что все ожидаемые запросы были сделаны во время теста, и вызовет ошибку, если будут сделаны какие-либо неожиданные запросы.
Еще одна лучшая практика — использовать метод .persist()
в вашем прицеле nock, чтобы макет оставался активным в нескольких тестах. Это может быть полезно, если у вас есть набор тестов, которые используют один и тот же фиктивный HTTP-запрос. Просто не забудьте очистить свои макеты, используя метод .done()
, когда закончите.
Наконец, хорошей идеей будет использовать метод .log()
в вашей области nock, чтобы регистрировать имитируемые запросы и ответы. Это может быть особенно полезно при отладке неудачных тестов, так как даст вам четкое представление о том, какие запросы выполняются и какие ответы возвращаются.
Заключение
Я надеюсь, что это руководство помогло вам начать работу с Nock! Помня об этих концепциях и рекомендациях, вы должны быть на пути к эффективному тестированию HTTP-взаимодействий в своем коде. Удачного тестирования!
Статья Nock: идеальный инструмент для тестирования HTTP-взаимодействий! была впервые опубликована в пятницу, 6 января 2023 г., в Блоге технических разработчиков. Для получения новейшего актуального контента, только что из печи, посетите https://techdevblog.io и подпишитесь на нашу рассылку!