7

System.Func 式を使用するテストがあります。それはかなり簡単なはずですが、テストは失敗し続けます。

テスト:

  [TestMethod]
  public void GetUser()
  {
    var username = "john@resilientplc.com";
    var user = new User() { UserId = 1, Username = username, Password = "123456789" };

    someDataMock.Setup(s => s.GetUser(p => p.UserId == 1)).Returns(user);

    var result = userProfileModel.GetUser(user.UserId);
    Assert.AreEqual(user, result);
  }

実装UserProfileModel :

public User GetUser(long userId)
{
  return someDataMock.GetUser(u => u.UserId == UserId);
}

エラー:

System.NotSupportedException: サポートされていない式: p => (p.UserId == 1)

私のテストが間違っている場所はありますか?

4

1 に答える 1

13

Moq を使用していて、someDataMock がモック オブジェクトであると仮定すると、問題はセットアップにあります。代わりにこれを試してください...

someDataMock.Setup(s => s.GetUser(It.IsAny<Func<User, bool>>()).Returns(userProfile);

これでうまくいくはずですが、テストの性質によっては、モックが受け入れるコールバックをもう少し制限する必要があるかもしれません。

于 2012-07-16T10:21:24.563 に答える