2009-07-09 4 views
2

Comment testeriez-vous le code suivant?Mocking and DetachedCriteria dans les tests unitaires

public IList<T> Find(DetachedCriteria criteria) 
{  
    return criteria.GetExecutableCriteria(session).List<T>(); 
} 

Je voudrais railler la mise en œuvre NH (comme la mise en simulacres pour ISession, ISessionFactory etc.) mais je ne parviens pas à avec celui-ci.

Répondre

1

Vous ne devriez pas vraiment tester cela car cela testerait NHibernate. En fait, vous pouvez voir des tests unitaires très similaires dans le code source NH lui-même.

Si vous voulez tester un autre code qui utilise ce code, voici comment vous cognez il:

Db.Stub(x => x.Find(Arg<DetachedCriteria>.Is.Anything))).Return(new List<Blah>{new Blah()}); 

Dans mon expérience, si vous voulez tester vos requêtes (par exemple, ceux qui construisent la DetachedCriteria) vous êtes beaucoup mieux avec une base de données en mémoire comme SQLite, ou mieux encore, une véritable instance SQL Server (ou SQL Server CE pour la mémoire).

+0

Je testais l'implémentation du référentiel elle-même. Vous avez raison, il n'y a rien à tester ici, il faudrait tester NHibernate, je devrais probablement me concentrer sur les tests de requêtes. Merci! –