2009-07-09 17 views
2

次のコードをどのようにテストしますか?単体テストの模擬テストと分離された条件

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

私は(ISession、ISessionFactoryなどのためのモックを設定するなど)NHの実装をモックしたいと思いますが、私はこの1つに問題が生じています。

答えて

1

NHibernateをテストしているように、実際にテストするべきではありません。実際には、NHのソースコード自体で非常によく似た単体テストを見ることができます。

あなたはこのコードを使用する他のいくつかのコードをテストしたい場合は、ここにあなたがそれをスタブしたい方法は次のとおりです。私の経験で

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

、あなたがあなたのクエリをテストしたい場合(ビルドなどのものDetachedCriteria)では、SQLiteのようなメモリ内のDB、または実際のSQL Serverインスタンス(またはメモリ内のSQL Server CE)を使用する方がずっと優れています。

+0

私はリポジトリ実装そのものをテストしていました。 あなたの権利は、ここでテストするものは何もありません。それはNHibernateをテストすることになります。私はたぶんクエリのテストに集中すべきです。 ありがとう! –

関連する問題