参考这个问题:
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”上发生了一个硬错误:
表达式树可能不包含赋值运算符。
我无法看到我对此进行了不正确的格式化 - 所以为什么不将其视为一个动作,因为另一个问题暗示它应该?
答案 0 :(得分:1)
我发现了一些与你所询问的相近的东西。 Moq how to replace obsolete expression我不知道这是否有帮助,因为我只使用过mock.Setup
和mock.Verify
。
同样如前所述,尝试在It.IsAny
中使用lambda表达式以这种方式查明较小的东西。如果验证失败,您就会知道它失败的具体位置。特别是如果您期望某个位置的值,例如。
答案 1 :(得分:0)
我不知道它是否有帮助,但过去使用It.IsAny<>
列表时我遇到了问题。你可以试试It.Is<List<IUser>>(l => l != null)
吗?