Для простоты предположим, что в моем приложении я ожидаю только одну таблицу пользователей по крайней мере со строкой администратора.
Я ожидаю, что это будет доступно во всех тестах. Это похоже на мой «базовый уровень» статуса базы данных.
Затем я хочу провести несколько тестов, например, чтобы проверить, могу ли я войти в приложение как для администратора, так и для обычных пользователей< /p>
Я хочу создать разные «сценарии» — возможно, по одному для каждого теста, с разными данными в базе данных.
Например, я хочу сделать 3 теста
- где есть только строка администратора
- где есть 2 строки: admin< /code> и user_foo
- где есть 4 строки: admin, user_x, user_y, user_z< /li>
но после запуска теста (который сам по себе может изменить содержимое базы данных) мне нужно " откат» до исходного «базового» статуса.
Однако я не могу просто запустить ROLLBACK, поскольку все изменения фактически зафиксированы.
Как я могу гарантировать, что база данных находится в «базовом» статусе (+ соответствующее приспособление) перед каждым тестом?
Единственное решение, которое я нашел, это
- удалить базу данных и перестроить ее с нуля перед каждым тестом
- вручную написать соответствующий sql для восстановления состояния базы данных
- игнорировать проблему и надеяться, что она сработает...
В идеале я хотел бы иметь способ указать pg «пометить» статус базы данных и восстановить его после запуска теста.
Возможно ли это?
Подробнее здесь: https://stackoverflow.com/questions/787 ... -each-test