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

c# - 如何测试控制器以确保授权过滤器以正确的角色应用于它?

我在站点的管理部分有一个控制器,它装饰有授权过滤器,角色设置为管理员。

这很好用,但我想创建一个单元测试以确保不删除过滤器。到目前为止,我已经验证了 Authorize 过滤器是否存在。

如何验证 Roles 参数?我正在使用 Fluent Assertion 1.7.1.1。

现在可以在 Fluent Assertion v2 中:

0 投票
3 回答
9448 浏览

c# - 如果构造函数抛出异常,是否有更合适的测试?

通常你测试,如果在某个方法中抛出异常,如下所示。我使用FluentAssertions

但是如何测试,如果在构造函数中抛出异常?我只是这样做了,但是通过FluentAssertions是否有更合适的方法?

0 投票
2 回答
966 浏览

fluent-assertions - 如何测试 XELement 及其子元素?

我有一个示例 Xml 代码片段

xml 被加载到我的 XElement 中,我使用了

测试我的代码,属性测试都通过了,但是元素测试(最后一个条件)失败了。

任何人都可以指出我的代码有什么问题?

我如何测试 Xml 有一个名为“value”的元素,它的值是“Changed name”?

提前致谢!

0 投票
1 回答
2051 浏览

c# - 在 Fluent 断言中排除未初始化 (null) 的属性

在 FluentAssertions 中,我可以使用AllProperties.But(obj => obj.property_I_do_not_want)来从比较断言中删除特定属性,当我知道要忽略的属性的名称时这很好,但在我的情况下,我只想忽略未初始化的属性。现在我愿意忽略一个等于 null 但如果有一个解决方案也排除了设置为默认值的原语,那将更加方便。

我开始尝试为PropertyAssertions该类编写一个扩展方法,但不知道如何创建一个IEnumerable<Expression<T>>包含Expression<T>用于访问每个属性以忽略以传递给该方法的But方法。

0 投票
2 回答
151 浏览

c# - 字符串日期比较

在 BDD 测试中,我正在比较日期。当比较日期在字符串中时。即使认为两个日期都相同,我也收到此消息并且测试失败

预期对象为“01/20/2012 12:00:00 AM”,但发现“1/20/2012 12:00:00 AM”。

还有一件事是这发生在我的系统上。如果我让另一个开发人员运行测试,测试就会通过。是否存在我缺少的某种类型的设置?

它的代码部分是

其中客户是一个哈希表。这个特定的语句在其他机器上通过了,但不是我的。

我知道我可以通过更改为日期比较而不是字符串比较来修复它。但我很好奇,因为这在其他机器上很好。

0 投票
2 回答
2554 浏览

c# - Should().Contain() 与等价选项

我试图断言Claims 的集合包含一组预期的声明。我似乎遇到的问题是无法检查子集并提供我自己的等效选项。

我试过的...

如果身份的声明不完全是预期的集合,那么这将失败,例如,不仅仅是那些声明。

这失败了,因为Contain只是使用了object::EqualsClaim类型未实现的方法。

我需要的是某种方法,但具有与暴露Contain相同的等效选项。ShouldAllBeEquivalentTo我想也许ShouldBeEquivalentTo会是我想要的,但这提供了断言集合对象本身,而不是集合中的项目。

0 投票
1 回答
2777 浏览

c# - FluentAssertions:ShouldBeEquivalentTo 方法仍然调用 Object.Equals()?

我有一个类,我们称之为它Foo,它是一个值类型,因此会覆盖Equals/GetHashCode()方法。在一个单独的测试夹具中,我想断言 Foo 上的所有属性都已正确设置,而不仅仅是用于相等的属性。出于这个原因,我的测试断言专门使用了该ShouldBeEquivalentTo方法,如果“两个对象图具有相同名称的具有相同值的属性,而与这些对象的类型无关”,文档建议该方法将认为两个对象是等效的。

但是,似乎ShouldBeEquivalentTo调用Foo.Equals方法,得到一个真实的结果,然后继续短路ShouldBeEquivalentTo承诺的基于反射的属性匹配。

这是预期的行为吗?如果是这样,在检查 FA 源时,我发现没有简单的方法来改变这种行为(IEquivalencyStep被声明为内部的)。还有其他方法可以解决这个问题吗?

编辑:丹尼斯:是的,我比较的两个对象属于同一类型。总而言之,我已经覆盖Equals 了类 Foo,但不希望 FA 在我的单元测试中使用这种相等的概念。

0 投票
2 回答
173 浏览

c# - 使用断言扩展 Simple.Data

我正在使用这个非常好的迷你 ORM Simple.Data来设置大量测试数据,快速而简单。我真的很想将它扩展到断言。例如我想断言计数:

这样我就可以或多或少地像您对 FluentAssertions 所做的那样进行评估。它可能看起来像这样:

但是我发现在不失去动态优势的情况下很难做到这一点。

有没有人暗示如何做到这一点,或者在合理范围内是否有可能?

我目前正在 GitHub 上遍历 src,试图找到一种我可以在本地执行此操作的方法,并临时玩弄以找到一种方法。

0 投票
1 回答
3576 浏览

c# - 使用 ShouldBeEquivalentTo 时如何排除 IEnumerable 中所有项目的属性?

在我的 NUnit/FluentAssertions 测试中,我使用以下代码将从系统返回的复杂对象与参考对象进行比较:

然而,这并不是我想要的。我想排除列表NameArticle每个对象,Items而不仅仅是第 0 个对象。我如何实现这个场景?

我浏览了文档并没有找到解决方案。我错过了什么吗?

0 投票
2 回答
277 浏览

c# - 在 C# 中测试泛型集合的引用相等性是一个愚蠢的想法吗?

我正在实现一个不可变字典的特殊情况,为了方便实现IEnumerable<KeyValuePair<Foo, Bar>>. 通常会修改字典的操作应该返回一个新实例。

到现在为止还挺好。但是当我尝试为该类编写一个流利风格的单元测试时,我发现我尝试过的两个流利断言库(应该流利断言)都不支持对NotBeSameAs()实现的对象的操作IEnumerable——除非你先强制转换他们到Object.

当我第一次遇到这个问题时,我认为它只是框架中的一个洞,但是当我看到 Fluent Assertions 有同样的洞时,我认为(因为我是 C# 的新手)我可能遗漏了一些关于 C# 集合的概念性内容——当我提交问题时,Should 的作者也暗示了这一点。

显然还有其他方法可以对此进行测试——cast toObject和 use NotBeSameAs(),just useObject.ReferenceEquals等等——但如果有充分的理由不这样做,我想知道那是什么。