我正在实现一个不可变字典的特殊情况,为了方便实现IEnumerable<KeyValuePair<Foo, Bar>>
. 通常会修改字典的操作应该返回一个新实例。
到现在为止还挺好。但是当我尝试为该类编写一个流利风格的单元测试时,我发现我尝试过的两个流利断言库(应该和流利断言)都不支持对NotBeSameAs()
实现的对象的操作IEnumerable
——除非你先强制转换他们到Object
.
当我第一次遇到这个问题时,我认为它只是框架中的一个洞,但是当我看到 Fluent Assertions 有同样的洞时,我认为(因为我是 C# 的新手)我可能遗漏了一些关于 C# 集合的概念性内容——当我提交问题时,Should 的作者也暗示了这一点。
显然还有其他方法可以对此进行测试——cast toObject
和 use NotBeSameAs()
,just useObject.ReferenceEquals
等等——但如果有充分的理由不这样做,我想知道那是什么。