Tag: fluent assertions

忽略ShouldBeEquivalentTo中的内部属性

在做ShouldBeEquivalentTo时有没有办法忽略类的内部属性? 例如,在下面的类中,我想从对象图比较中排除MetaData属性。 public class SomeObject { Public string SomeString { get; set; } internal MetaData MetaData { get; set; } } 我宁愿不使用 someObject.ShouldBeEquivalentTo(someOtherObject, options => options.Excluding(info => info.SelectedMemberPath == “MetaData”) 因为我可能有超过1个内部属性,并为所有这些属性设置这将是乏味的。

FluentAssertions:排序列表的等价性

我正在尝试使用C#中的FluentAssertions建立两个列表的等价,其中两件事很重要: 元素通过它们持有的值进行比较,而不是通过引用进行比较(即它们是等价的,不相等) 列表中元素的顺序很重要 FluentAssertions(甚至是NUnit)中没有这样做的function吗? 干杯!

如何使用流畅断言组合集合和属性断言?

我想“结合”Fluent Assertion的集合断言和属性断言,例如断言两个IEnumerable是成对相等的,使用逐个属性(可能是“嵌套”)比较(即结构相等,用函数式语言说法)。 具体例子: var dic = new Dictionary() { {1, “hi”}, {2, “bye” } }; var actual = dic.ToSelectListItems(0).OrderBy(si => si.Text); var expected = new List() { new SelectListItem() {Selected = false, Text=”bye”, Value=”2″}, new SelectListItem() {Selected = false, Text=”hi”, Value=”1″} }; 在这里,我编写了一个扩展方法ToSelectListItems ,它将Dictionary转换为IEnumerable的SelectListItem (来自ASP.NET MVC)。 我想声明actual和expected在“结构上”相等,注意引用类型SelectListItem不会覆盖Equal ,因此默认情况下使用引用相等。 更新 目前使用以下手动解决方案,仍然希望在FluentAssertions中内置更好的内容: public static void ShouldBeStructurallyEqualTo(this IEnumerable […]

如何在FluentAssertions中使用Exclude作为集合中的属性?

我有两节课: public class ClassA { public int? ID {get; set;} public IEnumerable Children {get; set;} } public class ClassB { public int? ID {get; set;} public string Name {get; set;} } 我想使用流畅的断言来与ClassA实例进行比较。 但是我想忽略ID(因为ID将在保存后分配)。 我知道我可以这样做: expectedA.ShouldBeEquivalentTo(actualA, options => options.Excluding(x => x.PropertyPath == “Children[0].ID”)); 对于集合中的每个ClassB,我显然可以重复这一点。 但是,我正在寻找一种方法来排除所有ID(而不是为每个元素做一个排除)。 我已经读过这个问题但是如果我删除了[0]索引器,断言就会失败。 这可能吗?

流利断言:近似比较两个数字集合

我有两个double数组。 有没有办法使用FluentAssertions使用.BeApproximately()技术逐个元素地比较数组? 一个范围值足以满足整个arrays的要求。 例: double[] source = { 10.01, 8.01, 6.01 }; double[] target = { 10.0, 8.0, 6.0 }; // THE FOLLOWING IS NOT IMPLEMENTED target.Should().BeApproximately(source, 0.01); 有替代方法吗?

流畅断言:大致比较类属性

我有一个类Vector3D ,它具有double类型的属性X , Y和Z (它还有其他属性,如Magnitude )。 使用Fluent Assertions以给定精度近似比较所有属性或属性选择的最佳方法是什么? 目前我一直在这样做: calculated.X.Should().BeApproximately(expected.X, precision); calculated.Y.Should().BeApproximately(expected.Y, precision); calculated.Z.Should().BeApproximately(expected.Z, precision); 是否有单线方法可以实现相同的目标? 比如使用ShouldBeEquivalentTo ,还是需要构建一个允许包含/排除属性的通用扩展方法?

使用ShouldBeEquivalentTo时,如何排除IEnumerable中所有项的属性?

在我的NUnit / FluentAssertions测试中,我使用以下代码将从系统返回的复杂对象与引用对象进行比较: response.ShouldBeEquivalentTo(reference, o => o.Excluding(x => x.OrderStatus) .Excluding(x => x.Id) .Excluding(x => x.Items[0].Name) .Excluding(x => x.Items[0].Article) .Excluding(x => x.ResponseStatus)); 但是,这并不是我的意图。 我想为Items列表中的每个对象排除Name和Article ,而不仅仅是第0个。 我该如何实现这种情况? 我查看了文档 ,但没有找到解决方案。 我错过了什么吗?

Can Fluent Assertions对IEnumerable 使用字符串不敏感的比较?

我有一对列表,我试图使用Fluent断言进行比较。 我可以轻松编写比较代码,但我想使用Fluent Assertions,以便我可以在测试失败消息中显示出来的原因。 到目前为止我看到的所有东西似乎都使用默认的Object.Equals比较,它区分大小写。 我似乎无法将IComparer传递给Equal或Contains方法,那么还有其他方法吗? [TestMethod()] public void foo() { var actual = new List { “ONE”, “TWO”, “THREE”, “FOUR” }; var expected = new List { “One”, “Two”, “Three”, “Four” }; actual.Should().Equal(expected); }

在异步方法中测试exception

我对此代码有点困惑(这是一个示例): public async Task Fail() { await Task.Run(() => { throw new Exception(); }); } [Test] public async Task TestFail() { Action a = async () => { await Fail(); }; a.ShouldThrow(); } 代码没有捕获exception,并且失败了 期望抛出System.Exception,但没有抛出exception。 我确定我错过了一些东西,但是文档似乎暗示这是要走的路。 一些帮助将不胜感激。