Ho un metodo sul mio interfaccia che assomiglia a:Moq - espressione Linq nel repository - Specificare espressione nella messa a punto
T GetSingle(Expression<Func<T, bool>> criteria);
sto cercando di prendere in giro il setup qualcosa di simile (mi rendo conto che questo non è funzionante):
_mockUserRepository = new Mock<IRepository<User>>();
_mockUserRepository.Setup(c => c.GetSingle(x => x.EmailAddress == "[email protected]"))
.Returns(new User{EmailAddress = "[email protected]"});
Mi rendo conto che sto passando il parametro sbagliato al setup.
Dopo aver letto this answer posso farlo funzionare passando l'espressione, in questo modo:
_mockUserRepository.Setup(c => c.GetSingle(It.IsAny<Expression<Func<User, bool>>>())
.Returns(new User{EmailAddress = "[email protected]"});
Tuttavia, questo significa che se chiamo il metodo GetSingle
con qualsiasi espressione, lo stesso risultato viene restituito.
C'è un modo per specificare nell'impostazione, quale espressione utilizzare?
Non vedo come questo risponda alla domanda. Il richiedente specificò espressamente che voleva evitare di usare un'espressione generica. –
La mia memoria è un po 'vaga, ma la domanda iniziale era di prendere in giro il metodo che accetta l'espressione. Penso che Alex abbia aggiornato la domanda, poiché vuole restituire risultati diversi a seconda dell'espressione data. – Andy
Una storia probabile;) –