Mam metodę w moim interfejsie, który wygląda tak:Moq - wyrażenie LINQ w repozytorium - Określanie ekspresji w konfiguracji
T GetSingle(Expression<Func<T, bool>> criteria);
Próbuję mock coś takiego setup (zdaję sobie sprawę, to nie jest pracy):
_mockUserRepository = new Mock<IRepository<User>>();
_mockUserRepository.Setup(c => c.GetSingle(x => x.EmailAddress == "[email protected]"))
.Returns(new User{EmailAddress = "[email protected]"});
Zdaję sobie sprawę, że przekazuję nieprawidłowy parametr do konfiguracji.
Po przeczytaniu this answer mogę dostać pracy, przekazując w wyrażeniu, na przykład:
_mockUserRepository.Setup(c => c.GetSingle(It.IsAny<Expression<Func<User, bool>>>())
.Returns(new User{EmailAddress = "[email protected]"});
Oznacza to jednak, gdybym wywołać metodę GetSingle
z każdej wypowiedzi, ten sam wynik jest zwracany.
Czy istnieje sposób określenia w konfiguracji, jakiego Expression użyć?
Nie widzę odpowiedzi na pytanie. Pytający wyraźnie stwierdził, że chciał uniknąć użycia ogólnego wyrażenia. –
Moja pamięć jest trochę niejasna, ale pierwotne pytanie dotyczyło kpiny z metody akceptującej wyrażenie. Myślę, że Alex zaktualizował pytanie, ponieważ chce zwrócić inny wynik w zależności od danego wyrażenia. – Andy
Prawdopodobna historia;) –