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

本文关键字:表达式 编译 错误 过时 替换 VerifySet 操作 Moq | 更新日期: 2023-09-27 18:27:59

参考这个问题:

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

最初我有:

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

但是收到了警告:

'Moq.MockExtensions.VerifySet(Moq.Mokk,System.Linq.Expressions.Expression>)'为过时:"由VerifySet(操作)替换"

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

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

我看不出我的格式不正确——那么为什么它没有像另一个问题所暗示的那样将其识别为一个动作呢?

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

我发现了一些与您询问的内容相对接近的内容。Moq如何替换过时的表达式我不知道这是否有帮助,因为我只使用过mock.Setupmock.Verify

同样如前所述,尝试在It.IsAny中使用lambda表达式以这种方式精确定位较小的内容。如果验证失败,您可以确切地知道它在哪里失败。尤其是当您期望某个位置的值时。

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