问题标签 [fluent-assertions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6125 浏览

c# - NUnit 或 Fluent Assertions 测试引用是否相等?

我正在使用 NUnit 2.6.2 + Fluent Assertions 2.0.1。

我想断言两个引用不指向同一个对象实例。我找不到一种干净的方式来表达这一点。

NUnitAssert.ReferenceEquals(ref1, ref2)- 但我找不到否定的断言。

Fluent Assertions中,我找不到任何直接支持这种情况的东西。

我能做到的唯一方法是这样的:

单位:Assert.False(object.ReferenceEquals(ref1, ref2));

流利:object.ReferenceEquals(ref1, ref2).Should().BeFalse();

就最小噪音而言,这两者似乎都不理想。有没有更好的办法?

0 投票
2 回答
13522 浏览

c# - 异步方法/Func 无法识别 FluentAssertions ShouldNotThrow

我正在尝试检查异步方法是否引发了具体异常。

为此,我正在使用 MSTEST 和 FluentAssertions 2.0.1。

我已经检查了这个关于 Codeplex的讨论,并了解它如何与异步异常方法一起工作,这是关于FluentAssertions 异步测试的另一个链接:

在尝试使用我的“生产”代码一段时间后,我关闭了 Fluentassertions 假 aync 类,我的结果代码是这样的(将此代码放入[TestClass]

问题是ShouldNotThrow无效:

代码无法识别 ShouldNotThrow 方法。如果我尝试编译,它会给我这个错误:'System.Func' 不包含'ShouldNotThrow' 的定义和最佳扩展方法重载'FluentAssertions.AssertionExtensions.ShouldNotThrow(System.Action, string, params object[]) ' 有一些无效的参数

谢谢。


解决方案

2.0.1 FA 版本不支持此ShouldNotThrow功能,它将包含在下一个版本 2.1(下周附近)中。

注意:ShouldThrow 已在 2.0.1 版本中得到支持。

0 投票
1 回答
190 浏览

c# - 断言浮点数近似于几个值之一

我正在尝试使用 Fluent Assertions 来验证投影到其自身轴上的向量是否近似于v.Length()or -v.Length()

我可以断言投影是近似的:result.Should().BeApproximately(v.Length())

或者我可以断言投影是几个结果之一:result.Should().BeOneOf(v.Length(), -v.Length())

我怎样才能将两者结合起来?

0 投票
2 回答
929 浏览

c# - 如何使用流体断言 .ShouldBeNull()

我正在尝试使用 Fluent Assertions ShouldBeNull() 扩展方法来断言我的实例确实为空。

显然,这会引发异常,因为我无法在空实例上调用扩展。

如何正确使用 Fluent Assertions 来做出此断言?

0 投票
2 回答
738 浏览

c# - Fluent 断言 PropertyInfo BeDecoratedWith

.NET FluentAssertions库(2.1.0 版)有几个BeDecoratedWith<T>()实现,用于断言类型(或类型成员)具有应用于它的给定属性。这些调用如下所示:

lambda 表达式断言该属性具有Name等于 some expectedValue

当它是一个类型时这很好sut,但是当它是一个成员时,它没有重载BeDecoratedWith<T>需要一个 lambda 表达式。

该文档很快涵盖了extensibility,但我无法弄清楚如何在接受上述 lambdaBeDecoratedWith<T>PropertyInfoAssertions类上创建重载(或扩展方法)。

有人可以向我展示扩展 Fluent Assertions 以实现此目的的正确方法吗?

0 投票
2 回答
19868 浏览

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

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

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

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

0 投票
1 回答
308 浏览

.net - FluentAssertions 不应该包含失败

我在使用 FluentAssertions 编写的测试中遇到了一些奇怪的行为。我有以下课程:

我想做一些快速的理智检查,我实际上是在创建一个返回随机值的骰子,而不是总是相同的值。因此,我对 TDD 的“快速而肮脏”的做法是将其滚动 100 次,并假设它至少生成两个值一次。但是,我注意到当我将数字降低到更低(至 10)时,我遇到了一些我没想到的失败。将其降至 2 看起来像这样:

有时当我运行这个测试时,它通过了。有时,它会失败,当然当集合是 {Failure,Failure} 时。这是意料之中的。但是,有时它会失败并显示如下消息:

消息:ExpectedCollection {Success, Failure} 包含成功。

这到底是怎么回事?我做了一些挖掘,发现很多关于包含使用引用等于而不是值等于的东西。想要继续前进,我尝试了这个:

只是有时获得通过,有时获得:

消息:集合 {Success, Failure} 应该有一个匹配 s.ToString().Equals("Success") 的项目。

这是怎么回事?

0 投票
3 回答
425 浏览

c# - 如何在 nunit 中原子地测试属性

给定一个具有多个属性的对象,比如 System.Drawing.Rectangle,我想断言所有属性的值(当一个属性不匹配时不会停止)并报告所有属性。

我尝试了这段代码,希望它能做我想要的......

NUnit 中执行此操作的正确方法是什么?

(我意识到这行得通:)

0 投票
2 回答
1707 浏览

c# - 如何在 C# 中比较字典列表是否相等

我正在尝试比较 2 个对象expectedItemsresultItems类型IEnumerable<IDictionary<string, object>>,但无法用它做很多事情。

此外,一个字典在代码中初始化,另一个字典是从外部 API 的 JSON 响应构建的。由于 JSON 并不真正关心对象内属性的顺序,SequenceEquals因此排除了 a。

我确实有两个相等的对象,所有这些低调的方法都失败了,
首先,

CollectionAssert.AreEqual(expectedItems, resultItems)

第二,

对象(据我所知)是相等的。

在此处输入图像描述

我可以尝试的任何事情,或者我目前做错的事情?

编辑
API 从时间戳中修剪滴答计数,这就是失败的原因。如何修剪 expectedItems 字典中的时间戳,然后进行比较?因此,集合必须相同,并且需要覆盖时间戳的比较。任何人? 在此处输入图像描述

0 投票
1 回答
2651 浏览

c# - 如果一个属性可以为空,则比较对象时 FluentAssertions 失败

场景:我有一个具有可为空属性的对象,当我运行被测方法时,该对象将被更新。在预期的对象中,我没有指定它,因为我想单独验证该值。这是一个简单的测试演示

但是,这会失败并显示以下消息:

如何使用 Options 上下文执行此操作,而不是将其拆分为两个或多个断言。(一个断言用于公共属性,每个用于具有范围或所需值而不是严格等价的项目)

expected注意:这在对象中没有显式值的引用类型上也会失败。

注意+:我试过 ExcludingMissingProperties(),它不会改变错误。