Unit testing 如何检查集合是否包含满足给定条件的N个项?
该框架提供了大量的功能 为了检查给定集合是否包含满足特定条件的元素,我可以使用Unit testing 如何检查集合是否包含满足给定条件的N个项?,unit-testing,fluent-assertions,Unit Testing,Fluent Assertions,该框架提供了大量的功能 为了检查给定集合是否包含满足特定条件的元素,我可以使用Should()。Contain: items.Should().Contain(item => item.Job == Job.Pilot, "because each plane has a pilot"); 我可以确保只有一个匹配元素: items.Should().ContainSingle(item => item.Job == Job.Pilot, "because each plane ha
Should()。Contain
:
items.Should().Contain(item => item.Job == Job.Pilot, "because each plane has a pilot");
我可以确保只有一个匹配元素:
items.Should().ContainSingle(item => item.Job == Job.Pilot, "because each plane has one pilot");
我还可以根据表达式检查所有项目(可能与顺序无关,尽管文档对此有点模糊):
如何检查给定数量的项(在枚举中没有特定位置)是否与给定条件匹配,而忽略其余的项?
我在想象这样的事情
items.Should().ContainMultiple(4, item => item.Job == Job.FlightAttendant);
甚至
items.Should().Times(4).Contain(item => item.Job == Job.FlightAttendant);
但是我在文件里找不到任何东西
我知道我可以预先筛选我的收藏,但当然,这与(合理的)选择相冲突
通过在断言中尽早使用Should(),我们可以在失败消息中包含更多信息
这在某种程度上是受支持的,还是应该放在某个功能请求中?不幸的是,没有这样的API。@DennisDoomen:这应该是一个答案,因为你是该主题的权威来源:)那么,有没有地方可以记录此功能请求,以保持这个想法?也许会出现一些关于如何实现它的好主意,最终会有人贡献它(这里不排除我自己,只要我用流利的断言工作了一点,并且对库有了更多的了解)。@DennisDoomen:想想看,可能会出现类似于
items.Should().ContainSome(item=>item.Job==Job.FlightAttendant)的东西()HaveCount(4);
最符合Fluent断言的一般工作方式。也就是说,一个ContainSome
方法基本上与Contain
方法相同,但返回一个和一个返回过滤集合的whichconstraint
。今天为特定于应用程序的类型编写了我的第一个自定义断言扩展,我现在对将来某个时候解决这个问题更有信心。是的,你的建议确实可行,但不会做深入的比较。你可以在
items.Should().Times(4).Contain(item => item.Job == Job.FlightAttendant);