我有一个名为 RenderContent 的方法,它返回object[]
在我的单元测试中,我需要声明此数组不包含VerifyRequest
目前,我正在使用以下Assert
声明。还有什么更简洁的吗?
Assert.That(
domain.RenderContent().OfType<VerifyRequest>().Count(),
Is.EqualTo(0)
);
我更喜欢使用流利的语法。另请注意, RenderContent 会返回object[]
,而不是IQueryable<object>
。
答案 0 :(得分:14)
如果您使用的是NUnit 2.5,则可以使用以下内容:
Assert.That(domain.RenderContent(), Has.None.InstanceOf<VerifyRequest>());
但我不确定其他单元测试框架是否支持这种断言风格。
答案 1 :(得分:12)
虽然我不知道IsFalse断言的确切NUnit语法,但最适合此类测试的是Any
扩展方法:
Assert.IsFalse(domain.RenderContent().OfType<VerifyRequest>().Any());
使用Count
方法可能很诱人,但Any
效率更高,因为它会在第一次出现时中断。
答案 2 :(得分:2)
Any扩展方法,可以给出lambda表达式:
Assert.IsFalse(domain.RenderContent().Any(i => i is VerifyRequest));
答案 3 :(得分:1)
您可以使用Assert.AreEqual方法来缩短它:
Assert.AreEqual(domain.RenderContent().OfType<VerifyRequest>().Count(), 0);
答案 4 :(得分:1)
我更喜欢Assert.AreEqual方法; NUNit使用Assert。用于内部Assert,STringAssert等对象。我喜欢Assert.AreEqual(0,domain.RenderContent()。OfType()。Count());检查计数。
这样,它直接检查一个类型的对象没有任何数量的记录,但是在某一点上,您看到的变体是首选项,它们都是同等有效的。你必须选择你喜欢的发展方式。