NUnit:断言 IEnumerable 是否包含某种类型的对象的最简洁方法是什么?
我有一个名为 RenderContent 的方法,它返回 object[]
在我的单元测试中,我需要断言该数组不包含任何 VerifyRequest
类型的对象。
目前,我正在使用以下 Assert
语句。还有更简洁的吗?
Assert.That(
domain.RenderContent().OfType<VerifyRequest>().Count(),
Is.EqualTo(0)
);
我更喜欢使用流畅的语法。另请注意,RenderContent 返回 object[]
,而不是 IQueryable
I have a method named RenderContent which returns object[]
In my unit test, I need to assert that this array does not contain any objects of type VerifyRequest
At the moment, I'm using the following Assert
statement. Is there anything more concise?
Assert.That(
domain.RenderContent().OfType<VerifyRequest>().Count(),
Is.EqualTo(0)
);
I prefer to use fluent syntax. Note also that RenderContent returns object[]
, not IQueryable<object>
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您使用的是 NUnit 2.5,您可以使用类似以下内容:
但我不确定其他单元测试框架是否支持这种断言样式。
If you are using NUnit 2.5, you could use something like:
But I'm not sure if other unit test frameworks support this assert-style.
尽管我不知道 IsFalse 断言的确切 NUnit 语法,但最适合此类测试的是
Any
扩展方法:使用
Count
可能很诱人方法,但Any
效率更高,因为它会在第一次出现时中断。Although I don't know the exact NUnit syntax for IsFalse assertion, the best fit for this kind of test is the
Any
extension method:It might be tempting to use the
Count
method, butAny
is more efficient, as it will break on the first occurrence.Any 扩展方法,可以给它一个 lambda 表达式:
The Any extension method, which can be given a lambda expression:
您可以使用 Assert.AreEqual 方法来缩短它:
You could shorten it a tad by using the Assert.AreEqual method instead:
我更喜欢 Assert.AreEqual 方法; NUNit 使用 Assert.That 作为内部 Assert、STringAssert 等对象。我喜欢只做 Assert.AreEqual(0, domain.RenderContent().OfType().Count());检查计数。
通过这种方式,它可以直接检查某种类型的对象是否具有任意数量的记录,但在某种程度上,您看到的变体是优先选择的,并且它们都同样有效。你必须选择你喜欢的适合你的发展风格。
I prefer the Assert.AreEqual approach; NUNit uses Assert.That for the internal Assert, STringAssert, etc objects. I like just doing Assert.AreEqual(0, domain.RenderContent().OfType().Count()); to check for the counts.
This way, it checks directly that no objects of a type have any number of records, but to a point the variations you see are preference and they all are equally valid. You have to choose what you like for your style of development.