问题标签 [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 投票
1 回答
573 浏览

c# - 如何在 C# 的 foreach 循环中使用 fluentassertions 引发异常

我正在为字典运行 foreach 循环,并ShouldThrow用于在测试失败时引发异常。

但是循环在第一次失败时退出。有没有办法推迟实际违规并将它们作为单个异常抛出?

0 投票
1 回答
1461 浏览

fluent-assertions - 流利的断言仅包含

使用 FluentAssertions,我想检查一个列表是否只包含具有某些值的对象。

例如,我尝试使用 lambda;

但是,不允许使用此语法。

0 投票
2 回答
5166 浏览

c# - FluentAssertions,确保 IEnumerable 仅包含单个元素

我正在编写单元测试,我有一些看起来像这样的东西:

GetFoos()返回和IEnumberable<Foo>

0 投票
0 回答
234 浏览

c# - 如何(正确)使用 FluentAssertions 排除只读属性?

我想与排除只读属性的FluentAssertions很棒的方法进行深入的对象比较。ShouldBeEquivalent以下作品:

PropertyInfo被标记为已过时,并带有警告“此属性将在未来版本中删除。请SelectedMemberInfo改用。” 该类型包含 contains NameMemberTypeDeclaringType仅此而已,因此不足以对属性进行某些检查。(在内部看起来实例实际上是 a PropertySelectedMemberInfo,它没有添加更多内容。)

那么,对属性进行此类检查的推荐的、非过时的方法是什么?是否SelectedMemberInfo仍在进行中?

0 投票
1 回答
252 浏览

c# - FluentAssertion 在 Mongo DateTime 比较中失败

我有一个使用FluentAssertion的单元测试,类似于:

最新的断言失败并显示以下消息:

如您所见,FluentAssertion 报告相同的日期时间,但仍然失败。

在这种特定情况下,我的注册表后端是 MongoDB,我通过最新的 C# driver访问它。但是,它可以使用特定断言不会失败的其他后端(例如 Zookeeper 或 Consul)。

所以我的猜测是问题来自 Mongo C# 驱动程序,而不是来自 FluentAssertion。我在 Mongo 中使用了 DateTime 序列化选项(我在任何地方都使用 UTC,这似乎也是 Mongo 的默认设置),但没有成功。知道可能出了什么问题吗?

谢谢你的帮助。

0 投票
2 回答
4268 浏览

c# - 如何使用 Fluent 断言检查列表是否排序

我正在使用 specflow 编写一些单元测试,并且需要一种方法来检查对象列表是否按特定属性排序。目前我正在这样做,但我不确定这是否是最好的方法。

有没有一种很好的方法可以使用 Fluent Assertions 来完成?

0 投票
1 回答
8602 浏览

c# - FluentAssertions 类型检查

我尝试使用FluentAssertions来检查我的 UnitTest,项目列表中的属性类型是某种类型。

不幸的是,我的测试失败并显示以下错误消息:

预期类型为 TypeB,但找到了 System.RuntimeType。

为什么它说,它找到了System.RuntimeType?我使用调试器来验证,那MyProperty1是类型TypeB,它是……我用.BeOfType<>错了吗?

0 投票
1 回答
459 浏览

c# - FluentAssertions WhenTypeIs double.NaN

我有两个复杂的对象,里面有不同的类型(对象、字符串、双打等)。我想通过使用以下代码来比较它们:

我正在尝试使用该.BeApproximately行为比较双类型属性值,但由于一种特殊情况而无法正常工作:

  • 有时我有一个double.NaN内部双精度数,并且将一个 NaN 与另一个 NaN 进行比较会给出一个断言失败(因为 BeApproximately 行为)。我怎样才能跳过比较,或者在这种情况下使它成为真的?

  • 最后,如何打印导致断言失败的对象的名称?

提前致谢。

编辑>>>>

我找到了第一种方法(感谢@Sam Holder):

我的断言转储看起来像:

“MyObjectName”:预期成员 Foo.Bar 为 0 +/- 1E-05,但找到 1,39675

“MyObjectName”:预期成员 Foo.FooBar 为 2,07781 +/- 1E-05,但找到 2,98412

...更多断言失败...

我希望它在打印所有失败之前只打印一次objectName 。

更新>>>>

我想要的行为尚未在 github 上实现:https ://github.com/dennisdoomen/fluentassertions/issues/310 。被标记为增强。谢谢你的帮助。

0 投票
2 回答
131 浏览

c# - 更新到最新的 FluentAssertions 打破了我的单元测试

我正在尝试使用最新版本的 FluentAssertions (4.0.1) 更新我的 Unittest 项目,但由于 API 的更改,我的测试不再编译。在更新之前,我使用的是 3.4.1 版本,以下代码已编译并成功运行。

测试序列化和反序列化类的实例,然后使用 FluentAssertions 比较两个对象,并设置排除用IgnoreDataMemberAttribute.

SoPropertyInfo不再存在,我必须使用ISubjectInfo,但是没有提供的属性(SelectedMemberInfo等)可以帮助我使我的测试运行为绿色。

我现在的问题是,如何更新我的测试代码,它适用于 FluentAssertions 4.0.1?

0 投票
1 回答
652 浏览

c# - 断言两个对象完全等价

在下面的简单示例中,我尝试找到一个Should()使测试通过并失败的断言,就像我在评论中描述的那样。我目前使用result.ShouldBeEquivalentTo(expectedResult, o => o.RespectingRuntimeTypes())的那个在最后两个测试中没有失败。目标是result并且excpectedResult应该始终具有完全相同的类型和值。