プロジェクトのビジネス ロジックに単体テストを追加することを検討し始めました。
最初にテストしたいメソッドは、特定のノードの子ノードのリストを返すサービス層のメソッドです。
メソッドは次のようになります。
public List<Guid> GetSubGroupNodes(string rootNode)
{
List<Tree> tree = ssdsContext.Trees.ToList();
Tree root = ssdsContext.Trees.Where(x => x.UserId == new Guid(rootNode)).FirstOrDefault();
return GetChildNodeIds(root, tree);
}
private List<Tree> GetChildNodes(Tree rootNode, List<Tree> tree)
{
kids.Add(rootNode);
foreach (Tree t in FindChilden(rootNode, tree))
{
GetChildNodes(t, tree);
}
return kids;
}
このようなテストをイメージする方法は、偽のツリー構造を提供し、ノードを提供すると正しいサブノードが返されることをテストすることです。
ssdsContext
ですObjectContext
。
ObjectContext
Entity Framework で ObjectContext または ObjectQuery<T> をモックする方法を抽出してインターフェイスすることが可能であることを確認しました。しかし、 a をモックすることはDbContextDBContext
の単体テストの時間の無駄であることも読みました。
また、Entity Framework はリポジトリ パターンと作業単位の実装であり、ここでパターン化されていることも読みました: Generic Repository With EF 4.1 what is the point .
これはすべて私を少し混乱させました...リポジトリレイヤーを作成するためにこのような方法をテストする唯一の本当の方法ですか? このメソッドを単体テストする価値はありますか?