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

发布于 2024-08-23 21:22:40 字数 414 浏览 5 评论 0原文

我有一个名为 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

弃爱 2024-08-30 21:22:40

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

Assert.That(domain.RenderContent(), Has.None.InstanceOf<VerifyRequest>());

但我不确定其他单元测试框架是否支持这种断言样式。

If you are using NUnit 2.5, you could use something like:

Assert.That(domain.RenderContent(), Has.None.InstanceOf<VerifyRequest>());

But I'm not sure if other unit test frameworks support this assert-style.

合久必婚 2024-08-30 21:22:40

尽管我不知道 IsFalse 断言的确切 NUnit 语法,但最适合此类测试的是 Any 扩展方法:

Assert.IsFalse(domain.RenderContent().OfType<VerifyRequest>().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:

Assert.IsFalse(domain.RenderContent().OfType<VerifyRequest>().Any());  

It might be tempting to use the Count method, but Any is more efficient, as it will break on the first occurrence.

尸血腥色 2024-08-30 21:22:40

Any 扩展方法,可以给它一个 lambda 表达式:

Assert.IsFalse(domain.RenderContent().Any(i => i is VerifyRequest));

The Any extension method, which can be given a lambda expression:

Assert.IsFalse(domain.RenderContent().Any(i => i is VerifyRequest));
oО清风挽发oО 2024-08-30 21:22:40

您可以使用 Assert.AreEqual 方法来缩短它:

Assert.AreEqual(domain.RenderContent().OfType<VerifyRequest>().Count(), 0);

You could shorten it a tad by using the Assert.AreEqual method instead:

Assert.AreEqual(domain.RenderContent().OfType<VerifyRequest>().Count(), 0);
﹎☆浅夏丿初晴 2024-08-30 21:22:40

我更喜欢 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文