Поскольку мир становится все более взаимосвязанным, интерфейсы прикладного программирования (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.