Я бы предложил выбрать маршрут тестирования на бэкэнде.
При запуске тестов рекомендуется запускать приложение локально с локальной базой данных, которую вы можете использовать для тестирования.Вы не хотите использовать ваше развернутое приложение и отправлять ему запросы 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.
});