Проверка уникальных ключей для модульного тестирования с использованием Effort
В настоящее время я делаю POC для модульного тестирования в существующем решении. Я читал здесь и там, и одна библиотека, которую я увидел, показалась мне очень интересной для проведения тестов с использованием Entity Framework - Effort ( https://effort.codeplex.com/).
Во время моих первых тестов Effort был хорош для моделирования контекста моей Базы данных, никаких странных ошибок не возникало, большинство операций были хорошими, как добавление новой записи и увеличение моего первичного ключа, когда у таблицы есть идентичность, хорошая в тот момент, до тех пор, пока Я попал в ситуацию с таблицей с уникальным ключом.
Это мой текущий сценарий:
База данных первой модели.
Контекст и сущность не имеют правила уникального ключа, поэтому, если Effort работает "в памяти", уникальный код должен существовать в коде, чтобы Effort принимал его в процессе, поэтому я добавил уникальный ключ в свою сущность вручную, чтобы проверить это, я добавил его в три атрибута (поля) в моем классе (сущности):
[Index ("UK_WhwhatName", IsUnique = true, Order = 1)]
[Index ("UK_WhwhatName", IsUnique = true, Order = 2)]
[Index ("UK_WhwhatName", IsUnique = true, Order = 3)]
Метод имеет внутри try-улова, внутри try-объекта находится dbcontext.SaveChanges(). В реальных условиях DbUpdateException фиксируется, когда нарушается правило уникального ключа, поэтому, когда это происходит, метод возвращает -1.
Я предположил, что даже если Effort сможет зафиксировать сбой уникального ключа, он, вероятно, не выдаст исключение DbUpdateException, поэтому я добавил дополнительный перехват для захвата исключения, любое исключение, которое может произойти.
Код работает нормально в реальных условиях, -1 возвращается, когда уникальный ключ нарушен.
Текущий результат использования Effort заключается в том, что код проходит без проблем, он не фиксирует сбой уникального ключа, даже в рамках исключения Exception, и тест сохраняет его, обычно увеличивая первичный ключ.
Возможно ли в Effort симулировать ошибки уникального ключа? Я что-то упустил?
Заранее благодарю за любую помощь.