0

リポジトリ メソッドで 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); 

誰でも私を助けてくれませんか

4

1 に答える 1

1

メソッドが呼び出されたパラメーターに関係なく、メソッドが返す正確な結果を指定しています。もちろん、あなたのメソッドは常に同じ結果を返します。

にはRepository、各フィルターに対して正しい結果が返されるかどうかを確認する独自のテストが必要です。をテストするときはController、 をモックしRepository、結果をハード コードします。

于 2012-12-03T09:26:37.243 に答える