0

Я хочу выполнить модульный тест. Моя бизнес-логика загружает правильные данные, загружая объект через бизнес-логику и сравнивая его с объектом, загруженным непосредственно из dbcontext.Assert.AreEqual модульное тестирование для объектов DbContext

Assert.AreEqual failed Я предполагаю, что объекты загружаются как отслеживаемые.

Я думал, что могу использовать AsNoTracking(), но это не сработало.

Есть ли способ «разворачивания» сущности из структуры сущности в POCO?

Я читал об отключении proxycreation, но это единственный вариант?

Я надеюсь, что есть что-то подобное (хотя я понимаю совершенно другое понятие), к ko.utils.unwrapObservable() в библиотеке javascript для нокаута.

ответ

1

Это странный интеграционный тест (это не единичный тест вообще, потому что он использует базу данных) - этого должно быть достаточно, чтобы просто определить статическое ожидание, а не загружать его снова из базы данных. Динамические тесты более подвержены ошибкам и могут скрывать проблемы.

Чтобы сделать его работу, вы должны переопределить Equal, чтобы сравнить данные, а не ссылки. Отключение создания прокси-сервера не будет работать, потому что вы по-прежнему будете иметь другую ссылку из своей бизнес-логики и другую ссылку из тестируемого контекста (если вы не разделяете контекст, но в этом случае тест будет еще более странным).

+0

Спасибо @Ladisslav. Хорошая точка зрения: «это не единичный тест вообще, потому что он использует базу данных», модульный тест не совсем корректен, я планирую сделать их лучше. Вы имеете в виду, потому что он использует базу данных для «ожидаемого» или потому, что он использует базу данных вообще? –

+0

Потому что он использует базу данных вообще. Единичный тест должен тестировать отдельный блок независимо от внешних факторов. –

+0

Прохладный спасибо, код давал мне дрожь, я надеюсь реорганизовать его, как только смогу. Спасибо за помощь. –

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