- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在考虑为 Controller Controller 实现单元测试,特别是围绕测试集合。关于MSDN example使用CollectionAssert.Contains()
确认对象是否出现在列表中。
我有一个 List<myObject>
其中 myObject
工具 IEquatable
(即实现 Equals()
,以便 List<myObject>.Contains()
能够正确辨别列表中类型为 myObject
的对象的存在(或不存在)。
CollectionAssert.Contains()
(对于 MS-VS 测试,而不是 nunit)函数似乎没有调用 Equals()
.所以我想知道它是否用于简单数组?如果不是,它如何比较自定义对象?
在这种情况下,我只是将断言更改为 Assert.IsTrue(myList.Contains(myObjectInstance))
.
最佳答案
查看 CollectionAssert.Contains()
的代码,实际的比较是通过迭代集合,并将每个元素与目标元素与 object.Equals(current, target)
进行比较来完成的。 .
所以你的问题的答案是,如果你没有覆盖 object
Equals()
的版本以便它发送到您的 IEquatable<T>
版本,你应该。否则,如果不满足引用相等性,测试将失败,因为 IEquatable<T>
过载 Equals()
不会覆盖从 object
继承的重载.
关于c# - CollectionAssert.Contains(myList, myItem) != Assert.IsTrue(myList.Contains(myItem)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502988/
我有这个 C++ 代码: #include using namespace std; struct MyItem { int value; MyItem* nextItem; }; int
我一直在考虑为 Controller Controller 实现单元测试,特别是围绕测试集合。关于MSDN example使用CollectionAssert.Contains()确认对象是否出现在列
我很确定代码是正确的,但我仍然收到错误“类型错误:this.setState.myItems 未定义”当我按下删除按钮时我尝试使用 filter() 方法中的 setState 删除特定项目它说错误在
我的 Angular 输入字段工作正常,直到我有了日期时间编辑器。 {{rule.data}} 这段代码工作正常。它显示一个带有日期的输入字段,旁边是输入字段中的值。 但是因为我想将它用作日期时间编
在我的 Android 项目中,我创建了一个抽象的 AsyncTask 类,我在其中输入 URL 和如果需要的分页信息,这样我就不需要继续编写 HTTP 内容等。 我创建了一个抽象方法 onAsync
我的 C# 代码中有这个类: public class MyItem { public int LocationId { get; set; } public
我在没有 Room 的情况下使用 PagedListAdapter 和 pagedListLiveData 来显示大量项目。 在下面的代码中,我正在尝试将适配器提交给 PagedList。 val p
我是一名优秀的程序员,十分优秀!