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

The*_*ebo 16 c# moq

提到这个问题:

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.SearchForUsers += null, this, new SearchEventArgs());

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

}
Run Code Online (Sandbox Code Playgroud)

最初我有:

        // Assert
        view.VerifySet(v => v.SearchResult);
Run Code Online (Sandbox Code Playgroud)

但得到了警告:

'Moq.MockExtensions.VerifySet(Moq.Mock,System.Linq.Expressions.Expression>)'已废弃:'由VerifySet替换(Action)'

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

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

我不明白我是不正确地格式化这个 - 所以为什么它不认识到这是一个动作,因为另一个问题暗示它应该?

ale*_*ete 0

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