リポジトリ メソッドで GetMany() のラムダ式を使用して、多数の値からいくつかの値をフィルター処理しています。Mvc コードで正常に動作しています。しかし、単体テストを書いたときに、リポジトリのモックを作成し、以下のように設定しました
focusRepository.Setup(x => x.GetMany(It.IsAny<Expression<Func<Focus, bool>>>())).Returns(fakeFocus);
しかし、これは機能していません。値をフィルタリングしていません。代わりに、null またはすべての値を返します。全体のテスト方法は
IEnumerable<Focus> fakeFocus = new List<Focus>
{
new Focus { FocusId = 1, FocusName="Test1",GroupId = 1},
new Focus { FocusId = 2, FocusName="Test2",GroupId = 1},
new Focus { FocusId = 3, FocusName="Test3",GroupId = 2}
}.AsEnumerable();
focusRepository.Setup(x => x.GetMany(It.IsAny<Expression<Func<Focus, bool>>>())).Returns(fakeFocus);
GroupGoalFormModel goal = new GroupGoalFormModel();
GroupController controller = new GroupController();
ViewResult result = controller.CreateGoal(2) as ViewResult;
Assert.IsNotNull(result, "View Result is null");
Assert.IsInstanceOf(typeof(GroupGoalFormModel),
result.ViewData.Model, "Wrong View Model");
私のリポジトリでは、コードを次のように書きました
IEnumerable<T> GetMany(Expression<Func<T, bool>> where);
誰でも私を助けてくれませんか