问题标签 [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 回答
1610 浏览

fluent-assertions - FluentAssertions - 创建自定义断言的完整教程

有人看过使用 FluentAssertions 创建自定义断言类的完整教程吗?最好的祝福

0 投票
1 回答
554 浏览

c# - FluentAssertions 比较两个不同类型的列表

我想知道是否有办法比较两个不同类型的列表。我找到了这个方法:

我正在寻找类似的东西:

我试图做一个扩展方法,但方法AssertSubjectEquality是受保护的,不支持第二种类型。

0 投票
1 回答
42705 浏览

c# - FluentAssertions:ShouldBeEquivalentTo vs Should().Be() vs Should().BeEquivalentTo()?

任何人都可以总结它们之间的差异和使用范围吗?

我读了SO文章,

  • ShouldBeEquivalientTo():ShouldBeEquivalentTo() 旨在用于比较复杂的对象图,而不是 .NET 框架的原始类型部分。
  • Should().BeEquivalentTo():单个项目 Equals() 实现以验证等效性,并且自版本 1 以来一直存在。FA 2.0 中引入的较新的 ShouldBeEquivalenTo() 正在进行深入的结构比较,并报告任何差异。
  • should().Be():找不到。

以我的拙见,ShouldBeEquivalientTo()Should().BeEquivalentTo()作品类似的话,如果Should().BeEquivalentTo()做深入比较的话。

0 投票
8 回答
18716 浏览

c# - FluentAssertions:排序列表的等价性

我试图在 C# 中使用 FluentAssertions 建立两个列表的等价性,其中有两件事很重要:

  1. 元素通过它们持有的值进行比较,而不是通过引用(即它们相等,不相等)
  2. 列表中元素的顺序很重要

FluentAssertions(甚至 NUnit)中没有这样做的功能吗?

干杯!

0 投票
1 回答
2648 浏览

c# - Fluent Assertions - ShouldBeEquivalentTo() 中最重要的比较

我有以下 DTO:

而且我正在尝试根据FA wiki使用此语法覆盖属性的比较:

但是测试没有编译。我收到此错误:

谁能建议正确的语法?

0 投票
1 回答
621 浏览

c# - fluentassertion 不会编译

我显然缺少一些组装或参考来完成这项工作,它可能是fluent assertions,也可能是Microsoft.Team Foundation.Warehouse。我都不确定如何使用/添加作为引用(我确定如何安装流利的断言,它什么也没做!)。

在网上找到了下面的代码,我想使用它,但它缺少一些组件,而不是说这里是一个屏幕截图 - 我已经安装了流利的断言库以尝试编译(我相信“应该()" 是流利断言的组成部分)

它似乎对这两个关键字感到不安,这[Fact]Should()某人来说是不是很容易获胜?

在此处输入图像描述

悬停消息说“System.Collections.Generic.List 不包含'Should'的定义,并且找不到接受System.Collections.Generic.List 类型的第一个参数的扩展方法'Should'(因为您缺少使用指令 ot 程序集引用?)”

0 投票
1 回答
4203 浏览

c# - 比较具有不同项目类型的集合

我有两个具有不同项目类型的集合,例如:

是否可以使用我自己的相等比较器和 FluentAssertions断言具有不同项目类型的两个集合以任何顺序包含相等的项目?

FA 官方文档中最相关的示例认为这两个集合是同一类型:

在我的情况下使用这种方法的一种可能的解决方案是List<Type1>根据来自的项目创建一个新集合collection2并使用它而不是customers在上面的示例中。
但有时这是不可能的,实际上闻起来像开销。

我想知道是否有一种类似的方法可以像上面那样使用 FA 优雅但适用于具有不同项目类型的集合?

更新 1(尝试使用@DennisDomen 建议):

让我们举一个更具体的例子。
假设我们有一个List<DateTime>代表单月日期的期望值:

一个测试方法返回一个List<int>天数:

我们要断言测试方法返回的天数集合与期望列表的 DateTime.Day 值组成的集合相同,即:

(但没有我没有在这个例子中演示的排序限制)。

我正在尝试以这种方式使用@DennisDoomen 建议:

问题是ctx.Expectation这里是一种类型int,而不是一种,所以我无论如何DateTime都无法得到。DateTime.Day

我在这里想念什么?

0 投票
1 回答
227 浏览

fluent-assertions - 如何使用 Fluent Assertions 测试 XElement 的子元素的属性、值?

假设我有一个XElement对象,它代表 Xml

如何测试<value>元素的值是“更改名称”,<child>元素具有属性id“abc”,值“一些虚拟值”?

0 投票
1 回答
831 浏览

c# - 如果使用 Fluent Assertions 的顺序不同,如何断言两个列表不等价

使用Fluent Assertions,我们可以断言两个集合是相等的(就属性值而言),使用如下:

假设list1list2包含相同的对象in any order,则断言为真。

如果我们想断言列表的顺序是准确的,我们可以这样做:

如果列表中包含相同的对象,我正在寻找断言错误的东西,wrong order但我找不到任何东西。

使用 Fluent 断言的最佳方法是什么?

PS - 这是一种学术好奇心,在现实中它甚至可能没有那么有用:)

0 投票
0 回答
591 浏览

entity-framework - FluentAssertions 图比较,ExcludingNestedObjects 被忽略?

我有一个单元/集成测试如下。

repository引用是一个并且是一个DbContext导航AcceptedAgreements属性。

此测试失败并显示以下消息。

如果我修改断言如下:

现在测试通过了。

请帮助我理解为什么ExcludingNestedObjects()不排除该Application属性,它实际上是一个嵌套对象,我不得不单独排除每个导航属性。上面的代码稍微简化了,因为我实际上有多个导航属性,并且必须单独排除它们中的每一个。