问题标签 [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# - NUnit 或 Fluent Assertions 测试引用是否相等?
我正在使用 NUnit 2.6.2 + Fluent Assertions 2.0.1。
我想断言两个引用不指向同一个对象实例。我找不到一种干净的方式来表达这一点。
NUnit有Assert.ReferenceEquals(ref1, ref2)
- 但我找不到否定的断言。
在Fluent Assertions中,我找不到任何直接支持这种情况的东西。
我能做到的唯一方法是这样的:
单位:Assert.False(object.ReferenceEquals(ref1, ref2));
流利:object.ReferenceEquals(ref1, ref2).Should().BeFalse();
就最小噪音而言,这两者似乎都不理想。有没有更好的办法?
c# - 异步方法/Func 无法识别 FluentAssertions ShouldNotThrow
我正在尝试检查异步方法是否引发了具体异常。
为此,我正在使用 MSTEST 和 FluentAssertions 2.0.1。
我已经检查了这个关于 Codeplex的讨论,并了解它如何与异步异常方法一起工作,这是关于FluentAssertions 异步测试的另一个链接:
在尝试使用我的“生产”代码一段时间后,我关闭了 Fluentassertions 假 aync 类,我的结果代码是这样的(将此代码放入[TestClass]
:
问题是ShouldNotThrow
无效:
代码无法识别 ShouldNotThrow 方法。如果我尝试编译,它会给我这个错误:'System.Func' 不包含'ShouldNotThrow' 的定义和最佳扩展方法重载'FluentAssertions.AssertionExtensions.ShouldNotThrow(System.Action, string, params object[]) ' 有一些无效的参数
谢谢。
解决方案
2.0.1 FA 版本不支持此ShouldNotThrow
功能,它将包含在下一个版本 2.1(下周附近)中。
注意:ShouldThrow 已在 2.0.1 版本中得到支持。
c# - 断言浮点数近似于几个值之一
我正在尝试使用 Fluent Assertions 来验证投影到其自身轴上的向量是否近似于v.Length()
or -v.Length()
。
我可以断言投影是近似的:result.Should().BeApproximately(v.Length())
或者我可以断言投影是几个结果之一:result.Should().BeOneOf(v.Length(), -v.Length())
我怎样才能将两者结合起来?
c# - 如何使用流体断言 .ShouldBeNull()
我正在尝试使用 Fluent Assertions ShouldBeNull() 扩展方法来断言我的实例确实为空。
显然,这会引发异常,因为我无法在空实例上调用扩展。
如何正确使用 Fluent Assertions 来做出此断言?
c# - Fluent 断言 PropertyInfo BeDecoratedWith
.NET FluentAssertions库(2.1.0 版)有几个BeDecoratedWith<T>()
实现,用于断言类型(或类型成员)具有应用于它的给定属性。这些调用如下所示:
lambda 表达式断言该属性具有Name
等于 some expectedValue
。
当它是一个类型时这很好sut
,但是当它是一个成员时,它没有重载BeDecoratedWith<T>
需要一个 lambda 表达式。
该文档很快涵盖了extensibility,但我无法弄清楚如何在接受上述 lambdaBeDecoratedWith<T>
的PropertyInfoAssertions
类上创建重载(或扩展方法)。
有人可以向我展示扩展 Fluent Assertions 以实现此目的的正确方法吗?
c# - 如何使用流利断言断言集合中的所有项目?
假设我想使用fluent-assertions测试返回一堆以下类型的项目的方法,以确保所有项目的IsActive
-flag 设置为true
:
为了实现这一点,我可以简单地遍历集合并在 foreach 循环中分别声明每个项目:
但是有没有更流畅的方法来一次断言整个集合中的每个项目?
.net - FluentAssertions 不应该包含失败
我在使用 FluentAssertions 编写的测试中遇到了一些奇怪的行为。我有以下课程:
我想做一些快速的理智检查,我实际上是在创建一个返回随机值的骰子,而不是总是相同的值。因此,我对 TDD 的“快速而肮脏”的做法是将其滚动 100 次,并假设它至少生成两个值一次。但是,我注意到当我将数字降低到更低(至 10)时,我遇到了一些我没想到的失败。将其降至 2 看起来像这样:
有时当我运行这个测试时,它通过了。有时,它会失败,当然当集合是 {Failure,Failure} 时。这是意料之中的。但是,有时它会失败并显示如下消息:
消息:ExpectedCollection {Success, Failure} 包含成功。
这到底是怎么回事?我做了一些挖掘,发现很多关于包含使用引用等于而不是值等于的东西。想要继续前进,我尝试了这个:
只是有时获得通过,有时获得:
消息:集合 {Success, Failure} 应该有一个匹配 s.ToString().Equals("Success") 的项目。
这是怎么回事?
c# - 如何在 nunit 中原子地测试属性
给定一个具有多个属性的对象,比如 System.Drawing.Rectangle,我想断言所有属性的值(当一个属性不匹配时不会停止)并报告所有属性。
我尝试了这段代码,希望它能做我想要的......
NUnit 中执行此操作的正确方法是什么?
(我意识到这行得通:)
c# - 如何在 C# 中比较字典列表是否相等
我正在尝试比较 2 个对象expectedItems和resultItems类型IEnumerable<IDictionary<string, object>>
,但无法用它做很多事情。
此外,一个字典在代码中初始化,另一个字典是从外部 API 的 JSON 响应构建的。由于 JSON 并不真正关心对象内属性的顺序,SequenceEquals
因此排除了 a。
我确实有两个相等的对象,所有这些低调的方法都失败了,
首先,
CollectionAssert.AreEqual(expectedItems, resultItems)
第二,
对象(据我所知)是相等的。
我可以尝试的任何事情,或者我目前做错的事情?
编辑
API 从时间戳中修剪滴答计数,这就是失败的原因。如何修剪 expectedItems 字典中的时间戳,然后进行比较?因此,集合必须相同,并且需要覆盖时间戳的比较。任何人?
c# - 如果一个属性可以为空,则比较对象时 FluentAssertions 失败
场景:我有一个具有可为空属性的对象,当我运行被测方法时,该对象将被更新。在预期的对象中,我没有指定它,因为我想单独验证该值。这是一个简单的测试演示
但是,这会失败并显示以下消息:
如何使用 Options 上下文执行此操作,而不是将其拆分为两个或多个断言。(一个断言用于公共属性,每个用于具有范围或所需值而不是严格等价的项目)
expected
注意:这在对象中没有显式值的引用类型上也会失败。
注意+:我试过 ExcludingMissingProperties(),它不会改变错误。