Вставка / обновление тестовых Axios с использованием Jest / Enzyme - PullRequest
0 голосов
/ 13 октября 2018

Я начинаю изучать тестирование React с помощью Enzyme / Jest.Некоторые тесты, которые я хотел бы использовать, чтобы увидеть, было ли что-то вставлено / обновлено в базе данных.Мне интересно, как это можно проверить с axios.Я слышал о axios-mock-adapter и, вероятно, буду использовать это.Есть ли способ, которым я могу имитировать вызов вставки / обновления базы данных без фактической вставки / обновления записей в фактической базе данных?

Например: у меня есть метод, который делает запрос post к конечной точке API, который вставляет новуюЗаписи в таблице в моей БД.Есть ли способ проверить это с помощью Jest / Enzyme, чтобы

  1. база данных не изменялась

  2. Я могу как-то получить ответ, которыйговорит мне, что вызов API был успешным, если бы он выполнялся с реальной базой данных.

Я не уверен, что это что-то, что должно быть проверено на реакцию или лучшечтобы это было сделано в бэкэнде с базой данных.

Я все еще новичок в этом, поэтому любая помощь / советы будут оценены!

Спасибо!

1 Ответ

0 голосов
/ 13 октября 2018

Я бы предложил выбрать маршрут тестирования на бэкэнде.

При запуске тестов рекомендуется запускать приложение локально с локальной базой данных, которую вы можете использовать для тестирования.Вы не хотите использовать ваше развернутое приложение и отправлять ему запросы axios, как это было бы, как вы сказали, обновляя фактическую базу данных.Кроме того, Jest нравится запускать тесты в любом порядке, по которому он хочет, поэтому было бы трудно ожидать, что некоторые данные вернутся назад, когда вы не знаете, что было и не было вставлено в БД.

Используйте настройку иподход к демонтажу.Каждый набор тестов должен, как правило, настраивать ваш сервер, а в конце «срывать его».Разделите свои тестовые наборы по каждому маршруту / модели.Это хорошая идея, потому что, когда вы будете проверять данные или тестировать маршруты вставки, вы не хотите, чтобы они влияли на другие тесты.Поэтому после каждого теста вы также можете обрезать все данные, которые вы высмеивали / вставляли.

Пример:

test('GET /cats get all cats', () => {
   // Mock 100 of cats
   // Send axios request for all cats
   // Assert 100 cats returned.
});

test('POST /cats insert a cat and then get all should be 1', () => {
   // Send axios request inserting 1 cat with data
   // Send axios request to get that 1 cat.
   // Assert returned cat matches data sent.
});

Если бы вышеописанные тесты были выполнены для того, чтобы у вас не было никаких проблем.Но поскольку тесты не имеют определенного порядка, если они были переключены, ваш главный тест не пройден, поскольку он вернет 101 кошку.Чтобы предотвратить это, вы хотите настроить и разорвать ...

Пример в Jest:

beforeAll(//Start server);
afterAll(//Stop server);
afterEach(//Truncate cats);

test('GET /cats get all cats', () => {
   // Mock 100 of cats
   // Send axios request for all cats
   // Assert 100 cats returned.
});

test('POST /cats insert a cat and then get all should be 1', () => {
   // Send axios request inserting 1 cat with data
   // Send axios request to get that 1 cat.
   // Assert returned cat matches data sent.
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...