Я использую библиотеку EntityFramework.Testing.Moq для модульного тестирования моих репозиториев, но я столкнулся с некоторой путаницей и нигде не могу найти документацию. В приведенном ниже примере кода я использую метод SetupData из ранее упомянутой библиотеки, чтобы создать фиктивный DbSet, который можно использовать как настоящий, но просто записывать данные в память вместо базы данных.
Метод принимает 2 параметра, первый из которых представляет собой любые данные, которые вы хотите предварительно загрузить в DbSet, а второй - функцию предиката, представляющую метод Find для DbSet. Для таблиц с одним ключом я все заработал, используя приведенный ниже код, хотя я не совсем понимаю, что происходит с объектами в функции предиката Find. Моя проблема сейчас в том, что у меня есть другая таблица с составным ключом, поэтому я не знаю, как настроить функцию предиката для учета составного ключа. Любая помощь очень ценится.
var mockUserOrganizationRoleData = new List<UserOrganizationRole>();
UserOrganizationRoleDbSetMock = new Mock<DbSet<UserOrganizationRole>>()
.SetupData(mockUserOrganizationRoleData, objects => mockUserOrganizationRoleData.SingleOrDefault(d => d.UserOrganizationRoleId == (int)objects.First()));