тестирование состояния отказа - это не плохо, на самом деле это то, что должно быть сделано.
Я бы сделал интеграционные тесты для этого, потому что вы хотите проверить реальную базу данных, чтобы увидеть, откатится ли сбой, как ожидалось.
У вас есть два теста:
- Первое обновление завершается неудачно, все должно остановиться, а второе обновление не должно запускаться.
- первое обновление работает, второе не удается, поэтому первое обновление следует откатить.
Если вам нужны модульные тесты, используйте, например, базу данных в памяти.
Вы не говорите, какую базу данных вы используете, но обычно вы можете проверить, успешно ли выполнено обновление, так как оператор обновления сообщит вам, сколько строк было изменено. Если вы получили ноль или что-то не так с оператором обновления, и вы получили сообщение об ошибке, то вы знаете, что вам нужно остановить