Je réécris cette question pour clarifier ce que je dois faire. Je suis en train d'utiliser Rhino-Mock à tester:Comment puis-je simuler une clause Where dans EF4
public IQueryable<TxRxMode> GetAllModes()
{
return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);
}
Voici le code:
var context = MockRepository.GenerateStub<IProjectContext>();
//Returns an empty list
context.Expect(c => c.TxRxModes.Where(Arg<Func<TxRxMode, bool>>.Is.Anything)).Return(new List<TxRxMode>().AsQueryable());
TxRxModes
dans une propriété IObjectSet
sur le contexte et je le veux retourner un IQueryable<TxRxMode
vide> objet lorsque la return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);
le code est appelé.
Quand je lance cela, l'Attendez-vous appel de méthode lance la ArgumentNullException:
valeur ne peut pas être nulle. Nom du paramètre: prédicat
J'ai essayé le plus simple:
IObjectSet<TxRxMode> modes = MockRepository.GenerateStub<IObjectSet<TxRxMode>>();
context.Expect(c => c.TxRxModes).Return(modes);
mais Déclenche une exception référence nulle quand je l'appelle
return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);
En fait, cela fait partie de la méthode que je suis en train se moquer, donc la question clé est de savoir comment je me moque de cette déclaration Où?
Bon point sur le statique, j'avais raté ça. J'ai essayé de simuler manuellement l'interface IObjectSet et devez maintenant fournir un objet IQueryProvider. Plus de fouilles nécessaires! –