c# - 如何使用流利断言断言集合中的所有项目?

标签 c# unit-testing collections fluent-assertions

假设我想使用 fluent-assertions 测试返回一堆以下类型项目的方法确保所有项目都将其 IsActive 标志设置为 true:

public class Item
{
    public bool IsActive { get; set; }
}

为了实现这一点,我可以简单地遍历集合并在 foreach 循环中分别断言每个项目:

var items = CreateABunchOfActiveItems();
foreach (var item in items)
{
    item.IsActive.Should().BeTrue("because I said so!");
}

但是有没有更流畅的方式来一次断言整个集合中的每个项目?

最佳答案

推荐的方法是使用OnlyContain:

items.Should().OnlyContain(x => x.IsActive, "because I said so!");

这些也可以:

items.All(x => x.IsActive).Should().BeTrue("because I said so!");

items.Select(x => x.IsActive.Should().BeTrue("because I said so!"))
     .All(x => true); 

请注意,最后一行 (.All(x => true)) 强制为每个项目执行前面的 Select

关于c# - 如何使用流利断言断言集合中的所有项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899755/

相关文章:

c# - 将 SetValue 与隐式转换结合使用

c# - 有没有适合C#开发者的可编程并行编程环境/框架?

c# - .NET 图表 - 通过拖动 X 轴缩放图表

java - JUnit 中的实例变量

java - Java 8 函数的 Mockito 参数匹配器

java - 具有相同元素但不同顺序的 LinkedHashSet .equals() 与 LinkedList .equals()

arrays - CompactMap 用于过滤具有 nil 属性的对象

c# - 为什么 ConfigurationSection 需要使用字符串查找内容?

asp.net-mvc - 使用 ControllerActionInvoker 进行单元测试以调用带有参数的操作

c# - 将 Collection<dynamic> 转换为 Collection<double> 的最佳方法?