Несмотря на то, что это немного устарело, я обнаружил, что, возможно, смогу поделиться своим опытом использования недавно имитированных хранимых процедур в модульных тестах.
С точки зрения ОП вам понадобитсяваш DBCheckDataService
для вызова DbContext.ExecuteSqlCommand
, который вы добавили к вашему DbContext
.Тогда макет будет работать.В настоящее время у вас есть DBCheckDataService
, вызывающий DbContext.Database.ExecuteSqlCommand
- который не является поддельным.
Это, безусловно, один из способов решения ложных реляционных запросов в ваших тестах.Лично я не фанат, так как не верю, что испытуемые должны быть изменены для ваших тестов.
Можно издеваться над DbContext IF , который вам нужен для включения реляционных запросов в вашитесты.Эта вторая часть является важным битом, потому что, если вам не нужно, используйте провайдер в памяти.
Есть несколько библиотек, которые будут высмеивать DbContext и некоторые изреляционные операцииЯ закончил тем, что сделал свой собственный , поскольку не было такого, который сделал бы все реляционных операций.EntityFrameworkCore.DbContextBackedMock.Moq проверяет все реляционные операции, а все остальное направляет их поставщику в памяти.Лучшее из обоих миров.