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

c# - 如何在 FluentAssertions 中为集合中的属性使用排除?

我有两节课:

我想使用流利的断言与 ClassA 实例进行比较。但是我想忽略 ID(因为 ID 将在保存后分配)。

我知道我可以这样做:

我显然可以为集合中的每个 ClassB 重复。但是,我正在寻找一种排除所有 ID 的方法(而不是对每个元素进行排除)。

我已经阅读了这个问题,但是如果我删除 [0] 索引器,则断言失败。

这可能吗?

0 投票
2 回答
2428 浏览

c# - 如何使用 FluentAssertions 断言属性的默认值?

我有一个包含各种类型的字段/属性等的类:

在我的部分代码中,只有SomeStringData应该填写,我想明确地测试一下。我使用FluentAssertions并拥有

但是如何测试,其他元素都没有被触及并且仍然具有它们的默认值?我当然可以:

但是,如何更清楚地表达这些项目应该具有默认值?

例如,使用假想BeDefault运算符:

有这样的选择吗?

0 投票
3 回答
5647 浏览

unit-testing - 如何在 F# 中保持方法返回类型“void”?

我正在使用 F#、Visual Studio 单元测试框架(又名 MSTest)和FluentAssertions为我的 F# 库编写单元测试。

测试方法的返回类型应为 void 或 Task。在 C# 中,这很容易:

在 F# 中,我有以下内容:

否则返回类型将更改为FluentAssertions.PrimitivesBooleanAssertions因此 Test Runner 看不到它。

如何避免|> ignore在每次测试结束时出现?

0 投票
1 回答
584 浏览

c# - ShouldBeEquivalentTo 导致对象引用未设置异常/ExcludeMissingProperties 的定义

摘要:在使用 Fluent Assertions 编写单元测试时,我遇到了一些我在下面详细描述的问题。如果您需要我提供任何其他信息,请告诉我,但我不确定这是否确实是预期的行为,或者我误解了某些东西。

问题 1 是对象引用未设置为我正在观察的实例异常。与定义 ExcludeMissingProperties 的方式相比,问题 2 的行为似乎出乎意料。

对于下面的问题,我使用以下示例类来帮助演示我正在谈论的问题。

问题 1:当期望没有设置复杂类型属性时,对象引用未设置为实例异常。

一个。如果预期对象 (expectation) 未设置复杂类型属性,而实际 (subject) 设置了,则未将对象引用设置为实例会引发错误。这对于简单的对象可能没问题,但在 DTO 严重嵌套的实际测试场景中,很难找到导致异常的原因。

湾。与此异常相关,如果我们可以抛出导致异常的属性的名称,那将非常有用。我知道这是一个未经处理的场景。

样品测试:

问题 2:ExcludingMissingProperties 的定义 我不得不编写大量代码来解决默认行为。

对于我的很多测试用例,我不想设置期望属性;例如:我想检查是否生成了主键的数据库插入场景(因此该值不应该是默认值就足够了),但我不在乎该值是什么。同样,还有其他与我的测试用例无关的嘈杂属性。

所以这失败了:

这通过:

0 投票
1 回答
2098 浏览

c# - FluentAssertions:匹配集合的每个对象

如何检查集合的每个对象是否符合给定的谓词?例如:检查每个项目(来自给定集合)是否匹配给定谓词(MyPredicate)。代码应该看起来像这样:

有类似的东西可用还是我必须自己写?

0 投票
1 回答
2324 浏览

fluent-assertions - 我有一个引用 FluentAssertions 的单元测试项目,当我更新到版本 3 时出现错误

我有一个 .net 4.0 测试项目,它为Should()扩展方法抛出一个方法未找到异常。

然后我注意到它也为 int 类型抛出异常。

有人知道为什么 FluentAssertions V3 会这样吗?

现在我要回到我的 2.2 版本。

作为参考,这是 FluentAssersions 项目网站https://github.com/dennisdoomen/fluentassertions/releases

这是代码示例: 在此处输入图像描述

这是一个例外:

0 投票
1 回答
2577 浏览

c# - FluentAssertions 引用未正确导入

如果我下载 FluentAssertions 1.7.1(我所有的单元测试目前都是针对它编写的),那么我可以引用 dll,下面的测试就可以正常工作。

但我尝试通过 NuGet 升级并使用 FluentAssertions 版本 3.0.90 并且还尝试了 3.0.107。遇到问题后,我尝试制作一个全新的解决方案/类库项目,但它无法从库中检测到任何东西......

下面的测试将无法编译,因为.Should无法为bool... 或其他任何事情找到扩展方法。但是我可以清楚地看到它存在于对象浏览器中我可以在我的程序集引用中看到FluentAssertionsFluentAssertions.Core,但只能在对象浏览器中查看FluentAssertions.Core。Intellisence 似乎为扩展方法找到的唯一东西是.ShouldRaisePropertyChangeFor<...>and .ShouldNotRaisePropertyChangeFor<...>

我的项目针对.Net4.0,此时我认为这是一个配置问题,但我不确定从哪里开始寻找它。谷歌上似乎没有其他人有这个问题。

0 投票
1 回答
541 浏览

fluent-assertions - 合理使用理由

我的测试代码有以下断言:

testSubscriber.Called.Should().BeTrue("the handler was not called");

当它失败时,我收到以下错误消息:

预期为 True,因为未调用处理程序,但发现为 False。

英语不是我的母语,但这听起来不对,我应该写什么原因?

0 投票
0 回答
684 浏览

c# - FluentAssertions - ShouldAllBeEquivalent 和 Exluding 属性 - 意外失败

我想断言两个 dto 列表的内容是等价的。但是,我希望在比较中忽略每个项目的一个属性。通过阅读Fluent Assertions 文档的 collections & dictionaries 小节,我的理解是这条线应该做我想做的事:

我编写了一个应该通过的单元测试,但是这个语句导致 AssertionException 被抛出,并带有以下消息:

预期 item[0].ActivityDetails.InternalId 为 0,但找到 19372。

预期 item[1].ActivityDetails.InternalId 为 0,但找到 19374。

预期 item[2].ActivityDetails.InternalId 为 0,但找到 19376。

带配置:

选择所有声明的属性

排除属性 ActivityDetails.InternalId

按名称匹配属性(或抛出)

info.RuntimeType.IsSameOrInherits(System.String) 时调用 Action

我可能误解了文档。谁能指出我做错了什么?

0 投票
1 回答
3380 浏览

c# - 如何在流利的断言中比较 null 和 string.Empty(或“”)?

我有两个相同类型的对象,该类型有一个字符串字段,在第一个对象中值为 null,在第二个对象中值为“”,如何强制流利的断言假设这是正确的?

断言本身:

这里引发了异常,说明期望值为空,真正的值为“”(反之亦然)