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