Поскольку мир становится все более взаимосвязанным, интерфейсы прикладного программирования (API) приобретают решающее значение для разработки программного обеспечения. API-интерфейсы позволяют различным приложениям взаимодействовать друг с другом, обеспечивая беспрепятственную передачу данных и интеграцию.
Однако по мере того, как API становятся все более сложными, становится важно убедиться, что они функционируют должным образом. Именно здесь вступает в действие тестирование API. Тестируя API, разработчики могут выявлять ошибки, уязвимости в системе безопасности и другие проблемы, которые могут повлиять на производительность их приложений.
Одним из популярных инструментов для тестирования API является Mocha Chai. Mocha — это среда тестирования JavaScript с простым и интуитивно понятным синтаксисом для создания тестов. Chai — это библиотека утверждений, которая позволяет разработчикам делать утверждения о поведении своих API.
Вместе Mocha Chai предлагает мощную и гибкую среду тестирования для API. Разработчики могут использовать Mocha Chai для тестирования всего, от простых RESTful API до более сложных веб-сервисов.
В этой статье мы рассмотрим, как использовать Mocha Chai для тестирования API. Мы рассмотрим основы написания тестов API с помощью Mocha Chai и приведем примеры распространенных тестовых сценариев. К концу этой статьи вы должны хорошо понимать, как использовать Mocha Chai для тестирования собственных API.
Предварительные условия
- Node.js загружен и установлен. Ссылка для скачивания"
- IDE, например Visual Studio Code. Ссылка для скачивания"
Настраивать
Шаг 1: Создайте папку проекта
В этом примере я создам папку проекта с именем mocha-chai-test.
Шаг 2: Установите зависимости
Вам нужно будет установить некоторые зависимости в папке проекта, чтобы начать. Вы можете сделать это с помощью npm, менеджера пакетов для Node.js. Откройте терминал или командную строку и выполните следующую команду.
npm install mocha chai supertest mochawesome mochawesome-report-generator util --save-dev
с:
- мокко в качестве основы для тестирования
- chai для утверждений
- супертест в качестве библиотеки утверждений HTTP.
- mochawesome и mochawesome-report-generator будут использоваться для создания отчета о тестировании в виде HTML-файла.
После установки в тестовой папке будут созданы следующие файлы.
Шаг 3: Настройте тестовый файл
Создайте новый файл с именем api.test.js (или любым другим именем, которое вы предпочитаете) в тестовом каталоге вашего проекта. Здесь вы будете писать свои тесты API.
Шаг 4: Напишите свой первый тест
В файле api.test.js
импортируйте Chai, Supertest, addContext и util.
- Например, я установил базовый URL-адрес для своих API как https://my-base-url.in/api.
- Вспомогательный метод addContext будет использоваться для связывания дополнительной информации с тестом.
- Здесь я также инициировал переменную response, в которой будет храниться ответ каждого теста перед его передачей для подтверждения.
const supertest = require('supertest')('https://my-base-url.in/api'); const expect = require('chai').expect; const addContext = require('mochawesome/addContext'); const util = require('util'); let response;
Затем напишите свой первый тест.
describe('Test Users', () => { it('should return a 200 response on GET /users', async() => { response = await supertest .get('/users') .query({'page': 2}) .then(response => { return response; }); expect(response.statusCode).to.be.equal(200); expect(response.body.page).to.be.equal(2); }); });
Примеры других запросов будут выглядеть примерно так:
- POST-запрос с авторизацией и пользовательским заголовком
it('should create a new user on POST /users', async() => { const name = "morpheus"; const job = "leader"; response = await supertest .post('/users') .set('Authorization', token-goes-here) .set('Content-Type', 'application/x-www-form-urlencoded') .send({ name: name, job: job }) .then(response => { return response; }); expect(response.statusCode).to.be.equal(201); expect(response.body.name).to.be.equal(name); expect(response.body.job).to.be.equal(job); });
- POST-запрос с прикрепленным файлом
it('should update user image on POST /users/:user_id/profile', async() => { const filepath = "resources/my-image.jpg" response = await supertest .post(endpoint) .set('Content-Type', 'multipart/form-data') .attach('image', filepath, { contentType: 'image/jpeg' }) .then(response => { return response; }); expect(response.statusCode).to.be.equal(201); });
- PUT-запрос
it('should update user detail on PUT /users/:user_id', async() => { const new_job = "zion resident"; response = await supertest .put('/users/2') .send({ job: new_job }) .then(response => { return response; }); expect(response.statusCode).to.be.equal(200); expect(response.body.job).to.be.equal(new_job); });
- УДАЛИТЬ запрос
it('should delete user on DELETE /users/:user_id', async() => { response = await supertest .delete('/users/2') .then(response => { return response; }); expect(response.statusCode).to.be.equal(204); });
- До/После Тесты. Вы также можете добавить другие шаги, которые вы, возможно, захотите выполнить с помощью тестов BeforeEach или AfterEach. Этот пример позволит вам записывать тело ответа тестируемого API в забавный HTML-отчет.
afterEach(function() { addContext(this, { title: 'Response Body', value: util.inspect(response.body) }); });
Шаг 5: Запустите тесты
Добавьте следующую конфигурацию в файл package.json.
"scripts": { "test": "mocha '**/*.test.js' --reporter mochawesome --require mochawesome/register" },
Выполните следующую команду в терминале или командной строке
npm test
Это позволит вам запускать файлы test.js, выводить результаты в терминал и генерировать отчет в формате HTML с помощью mochawesome.
Поздравляем, вы успешно настроили тестирование API с помощью Mocha Chai! Отсюда вы можете написать больше тестов, чтобы охватить различные сценарии и обеспечить надежность вашего API.