C# Moq验证集(操作)替换过时表达式编译错误

C# Moq验证集(操作)替换过时表达式编译错误,c#,moq,C#,Moq,关于这个问题: 我有以下资料: [Test] public void OnSearchRequest_ViewFiresEvent_EventIsHandled() { // Arrange Mock<IViewUsers> view = new Mock<IViewUsers>(); Users users = new Users(view.Object); // Act view.Raise(v => v.Search

关于这个问题:

我有以下资料:

[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>>());

}
但他得到了警告:

'Moq.MockExtensions.VerifySet(Moq.Mock, System.Linq.Expressions.Expression>)是 过时:“由VerifySet(操作)替换”

因此,我找到了上面提到的问题,并将其更改为匹配,但现在我仍然收到该警告,除此之外,在调用VerifySet的过程中,“v.SearchResult”出现了一个硬错误:

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


我看不出我对它的格式设置不正确-那么为什么它不承认这是一个动作,因为另一个问题暗示它应该这样做?

我不知道它是否有用,但我过去在使用
it.IsAny
列表时遇到过问题。你能试试类似于
It.Is(l=>l!=null)
的东西吗?

我发现一些东西与你所问的比较接近。我不知道这是否有用,因为我只使用过
mock.Setup
mock.Verify


同样如前所述,尝试在
It.IsAny
中使用lambda表达式,以这种方式精确定位较小的对象。如果验证失败,您可以确切地知道它失败的地方。特别是如果您希望某个位置有一个值,例如。

您使用的是哪种版本的Moq?因为我用4.0.10827.0创建了一个小复制,它是绿色的,编译时没有过时的警告。。。您应该提供测试中类的外观的更多上下文。您还需要什么上下文?这是我的复制:。你可以测试它,也许你会看到一些东西…这是令人沮丧的地狱。您的验证集代码与我发布的完全相同。现在?现在它编译好了。不管怎样,如果你想把它作为一个答案,我会接受的。谢谢
        // Assert
        view.VerifySet(v => v.SearchResult);