NUnit:断言IEnumerable是否包含某种类型的对象的最简洁方法是什么?

goo*_*gic 8 linq nunit unit-testing

我有一个名为RenderContent的方法返回object[]
在我的单元测试中,我需要断言这个数组不包含任何类型的对象VerifyRequest

目前,我正在使用以下Assert声明.还有什么更简洁的吗?

Assert.That(
    domain.RenderContent().OfType<VerifyRequest>().Count(),
    Is.EqualTo(0)
);
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用流利的语法.另请注意,RenderContentobject[]不会返回IQueryable<object>.

Mar*_*atz 14

如果您使用的是NUnit 2.5,则可以使用以下内容:

Assert.That(domain.RenderContent(), Has.None.InstanceOf<VerifyRequest>());
Run Code Online (Sandbox Code Playgroud)

但我不确定其他单元测试框架是否支持这种断言风格.


Mar*_*ann 12

虽然我不知道IsFalse断言的确切NUnit语法,但最适合这种测试的是Any扩展方法:

Assert.IsFalse(domain.RenderContent().OfType<VerifyRequest>().Any());  
Run Code Online (Sandbox Code Playgroud)

使用该Count方法可能很诱人,但Any效率更高,因为它会在第一次出现时中断.