Moq VerifySet(Action)替换过时的表达式编译错误

时间:2012-03-14 15:18:10

标签: c# moq

参考这个问题:

Moq how to replace obsolete expression

我有以下内容:

[Test]
public void OnSearchRequest_ViewFiresEvent_EventIsHandled()
{
    // Arrange
    Mock<IViewUsers> view = new Mock<IViewUsers>();
    Users users = new Users(view.Object);

    // Act
    view.Raise(v => v.SearchForUsers += null, this, new SearchEventArgs());

    // Assert
    view.VerifySet(v=> v.SearchResult = It.IsAny<List<IUser>>());

}

最初我有:

        // Assert
        view.VerifySet(v => v.SearchResult);

但是得到了警告:

  

“Moq.MockExtensions.VerifySet(Moq.Mock,   System.Linq.Expressions.Expression&gt;)'是   已废弃:'由VerifySet替换(操作)'

所以我找到了上面引用的问题,并将其更改为匹配,但现在我仍然得到了警告,并且最重要的是,在对VerifySet的调用中“v.SearchResult”上发生了一个硬错误:

  

表达式树可能不包含赋值运算符。

我无法看到我对此进行了不正确的格式化 - 所以为什么不将其视为一个动作,因为另一个问题暗示它应该?

2 个答案:

答案 0 :(得分:1)

我发现了一些与你所询问的相近的东西。 Moq how to replace obsolete expression我不知道这是否有帮助,因为我只使用过mock.Setupmock.Verify

同样如前所述,尝试在It.IsAny中使用lambda表达式以这种方式查明较小的东西。如果验证失败,您就会知道它失败的具体位置。特别是如果您期望某个位置的值,例如。

答案 1 :(得分:0)

我不知道它是否有帮助,但过去使用It.IsAny<>列表时我遇到了问题。你可以试试It.Is<List<IUser>>(l => l != null)吗?