问题标签 [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.
c# - 如何测试控制器以确保授权过滤器以正确的角色应用于它?
我在站点的管理部分有一个控制器,它装饰有授权过滤器,角色设置为管理员。
这很好用,但我想创建一个单元测试以确保不删除过滤器。到目前为止,我已经验证了 Authorize 过滤器是否存在。
如何验证 Roles 参数?我正在使用 Fluent Assertion 1.7.1.1。
现在可以在 Fluent Assertion v2 中:
c# - 如果构造函数抛出异常,是否有更合适的测试?
通常你测试,如果在某个方法中抛出异常,如下所示。我使用FluentAssertions:
但是如何测试,如果在构造函数中抛出异常?我只是这样做了,但是通过FluentAssertions是否有更合适的方法?
fluent-assertions - 如何测试 XELement 及其子元素?
我有一个示例 Xml 代码片段
xml 被加载到我的 XElement 中,我使用了
测试我的代码,属性测试都通过了,但是元素测试(最后一个条件)失败了。
任何人都可以指出我的代码有什么问题?
我如何测试 Xml 有一个名为“value”的元素,它的值是“Changed name”?
提前致谢!
c# - 在 Fluent 断言中排除未初始化 (null) 的属性
在 FluentAssertions 中,我可以使用AllProperties.But(obj => obj.property_I_do_not_want)
来从比较断言中删除特定属性,当我知道要忽略的属性的名称时这很好,但在我的情况下,我只想忽略未初始化的属性。现在我愿意忽略一个等于 null 但如果有一个解决方案也排除了设置为默认值的原语,那将更加方便。
我开始尝试为PropertyAssertions
该类编写一个扩展方法,但不知道如何创建一个IEnumerable<Expression<T>>
包含Expression<T>
用于访问每个属性以忽略以传递给该方法的But
方法。
c# - 字符串日期比较
在 BDD 测试中,我正在比较日期。当比较日期在字符串中时。即使认为两个日期都相同,我也收到此消息并且测试失败
预期对象为“01/20/2012 12:00:00 AM”,但发现“1/20/2012 12:00:00 AM”。
还有一件事是这发生在我的系统上。如果我让另一个开发人员运行测试,测试就会通过。是否存在我缺少的某种类型的设置?
它的代码部分是
其中客户是一个哈希表。这个特定的语句在其他机器上通过了,但不是我的。
我知道我可以通过更改为日期比较而不是字符串比较来修复它。但我很好奇,因为这在其他机器上很好。
c# - Should().Contain() 与等价选项
我试图断言Claim
s 的集合包含一组预期的声明。我似乎遇到的问题是无法检查子集并提供我自己的等效选项。
我试过的...
如果身份的声明不完全是预期的集合,那么这将失败,例如,不仅仅是那些声明。
这失败了,因为Contain
只是使用了object::Equals
该Claim
类型未实现的方法。
我需要的是某种方法,但具有与暴露Contain
相同的等效选项。ShouldAllBeEquivalentTo
我想也许ShouldBeEquivalentTo
会是我想要的,但这提供了断言集合对象本身,而不是集合中的项目。
c# - FluentAssertions:ShouldBeEquivalentTo 方法仍然调用 Object.Equals()?
我有一个类,我们称之为它Foo
,它是一个值类型,因此会覆盖Equals
/GetHashCode()
方法。在一个单独的测试夹具中,我想断言 Foo 上的所有属性都已正确设置,而不仅仅是用于相等的属性。出于这个原因,我的测试断言专门使用了该ShouldBeEquivalentTo
方法,如果“两个对象图具有相同名称的具有相同值的属性,而与这些对象的类型无关”,文档建议该方法将认为两个对象是等效的。
但是,似乎ShouldBeEquivalentTo
调用Foo.Equals
方法,得到一个真实的结果,然后继续短路ShouldBeEquivalentTo
承诺的基于反射的属性匹配。
这是预期的行为吗?如果是这样,在检查 FA 源时,我发现没有简单的方法来改变这种行为(IEquivalencyStep
被声明为内部的)。还有其他方法可以解决这个问题吗?
编辑:丹尼斯:是的,我比较的两个对象属于同一类型。总而言之,我已经覆盖Equals
了类 Foo,但不希望 FA 在我的单元测试中使用这种相等的概念。
c# - 使用断言扩展 Simple.Data
我正在使用这个非常好的迷你 ORM Simple.Data来设置大量测试数据,快速而简单。我真的很想将它扩展到断言。例如我想断言计数:
这样我就可以或多或少地像您对 FluentAssertions 所做的那样进行评估。它可能看起来像这样:
但是我发现在不失去动态优势的情况下很难做到这一点。
有没有人暗示如何做到这一点,或者在合理范围内是否有可能?
我目前正在 GitHub 上遍历 src,试图找到一种我可以在本地执行此操作的方法,并临时玩弄以找到一种方法。
c# - 使用 ShouldBeEquivalentTo 时如何排除 IEnumerable 中所有项目的属性?
在我的 NUnit/FluentAssertions 测试中,我使用以下代码将从系统返回的复杂对象与参考对象进行比较:
然而,这并不是我想要的。我想排除列表Name
中Article
的每个对象,Items
而不仅仅是第 0 个对象。我如何实现这个场景?
我浏览了文档并没有找到解决方案。我错过了什么吗?
c# - 在 C# 中测试泛型集合的引用相等性是一个愚蠢的想法吗?
我正在实现一个不可变字典的特殊情况,为了方便实现IEnumerable<KeyValuePair<Foo, Bar>>
. 通常会修改字典的操作应该返回一个新实例。
到现在为止还挺好。但是当我尝试为该类编写一个流利风格的单元测试时,我发现我尝试过的两个流利断言库(应该和流利断言)都不支持对NotBeSameAs()
实现的对象的操作IEnumerable
——除非你先强制转换他们到Object
.
当我第一次遇到这个问题时,我认为它只是框架中的一个洞,但是当我看到 Fluent Assertions 有同样的洞时,我认为(因为我是 C# 的新手)我可能遗漏了一些关于 C# 集合的概念性内容——当我提交问题时,Should 的作者也暗示了这一点。
显然还有其他方法可以对此进行测试——cast toObject
和 use NotBeSameAs()
,just useObject.ReferenceEquals
等等——但如果有充分的理由不这样做,我想知道那是什么。