2009-07-09 2 views
2

Wie würden Sie den folgenden Code testen?Mocking und DetachedCriteria in Unit Tests

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

Ich möchte NH Implementierung verspotten (wie Mocks für ISession, ISessionFactory usw. einstellen), aber ich habe Probleme mit diesem.

Antwort

1

Sie sollten dies nicht wirklich testen, da dies NHibernate testen würde. In der Tat können Sie sehr ähnliche Komponententests im NH-Quellcode selbst sehen.

Wenn Sie wollten einen anderen Code testen, die diesen Code verwendet, hier ist, wie Sie es Stummel würde:

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

In meiner Erfahrung, wenn Sie Ihre Fragen testen möchten (zB diejenigen, die das bauen DetachedCriteria) Sie sind viel besser mit einer In-Memory-DB wie SQLite, oder noch besser, eine echte SQL Server-Instanz (oder SQL Server CE für In-Memory).

+0

Ich habe die Repository-Implementierung selbst getestet. Sie haben Recht, es gibt hier nichts zu testen, es würde NHibernate testen, ich sollte mich wahrscheinlich auf das Testen von Abfragen konzentrieren. Danke! –