2016-07-26 2 views
0

Можно ли завернуть каждый тест sequelize в транзакции и откат в конце каждого теста? Каким будет рекомендуемый способ реализовать это с помощью sequelize?Sequelize транзакционные тесты

Также она будет работать, если код тестируемой также открывает сделку? (Вложенные транзакции)

Благодарности

ответ

1

Я не верю, что Sequelize поддерживает вложенные транзакции.

Похоже, вы пытаетесь сохранить изоляцию между испытаниями, чтобы изменения в одном тесте не влияли на других. Моя команда выполняет это, заполняя тестовую базу данных данными прибора в объявлении beforeEach и обрезая затронутые таблицы в объявлении afterEach. Тесты выполняются довольно быстро, используя этот метод.

+0

Мы также используем этот подход. Причина для обертывания тестов в транзакции заключается в том, чтобы предотвратить усечение всех таблиц, чтобы очистить db в каждом тесте. Поскольку наш набор тестов довольно большой, и мы определили, что усечение является частью, принимающей наибольшее время в каждом тесте. – user1990009

+0

Возможно, вы уже делаете это, но можете попытаться сузить фокус шага очистки и настроить блок 'describe', чтобы обрезать только несколько таблиц, затронутых каждым блоком тестов. Например, если вы тестируете свою модель «Пользователь», добавьте «afterEach» в этот файл, который будет только обрезать таблицу «Пользователь». –

Смежные вопросы