如何在 Fluent Assertions 中正确组合 Using 和 WhenTypeIs<DateTime>
How to correctly combine Using and WhenTypeIs<DateTime> in Fluent Assertions
我有一个这样的对象字典:Attributes = new Dictionary<string, object>();
字典中有一个 DateTime
,我正在尝试测试 DateTime
是否在特定日期,如下所示:
Attributes[key].ShouldBeEquivalentTo(DateTime.Now, options => options
.Using<DateTime>(ctx =>
{
//throw new InvalidOperationException();
ctx.Subject.Should().BeSameDateAs(ctx.Expectation);
}).WhenTypeIs<DateTime>());
然而,这会导致断言失败 Expected subject to be <2016-06-30 11:38:05.447>, but found <2016-06-30 10:38:05>
。日期是同一天所以我相信应该通过,但断言失败了。
这让我得出结论,ctx.Subject.Should().BeSameDateAs(ctx.Expectation)
行没有被应用。我尝试添加异常并进行调试,但似乎从未达到操作中的代码。
我应该期待这项工作吗?我做得对吗?
永远不会到达运行中的代码,因为 ShouldBeEquivalentTo
应该比较对象图(实际和预期的属性)。 Using...WhenTypeIs<DateTime>
将应用于类型 DateTime
的 属性 。
在你的例子中,对象是 DateTime
本身,所以你可以断言它确实是 DateTime
并链接其他所需的断言:
Attributes[key].Should().BeOfType<DateTime>().Which.Should().BeSameDateAs(DateTime.Now);
我有一个这样的对象字典:Attributes = new Dictionary<string, object>();
字典中有一个 DateTime
,我正在尝试测试 DateTime
是否在特定日期,如下所示:
Attributes[key].ShouldBeEquivalentTo(DateTime.Now, options => options
.Using<DateTime>(ctx =>
{
//throw new InvalidOperationException();
ctx.Subject.Should().BeSameDateAs(ctx.Expectation);
}).WhenTypeIs<DateTime>());
然而,这会导致断言失败 Expected subject to be <2016-06-30 11:38:05.447>, but found <2016-06-30 10:38:05>
。日期是同一天所以我相信应该通过,但断言失败了。
这让我得出结论,ctx.Subject.Should().BeSameDateAs(ctx.Expectation)
行没有被应用。我尝试添加异常并进行调试,但似乎从未达到操作中的代码。
我应该期待这项工作吗?我做得对吗?
永远不会到达运行中的代码,因为 ShouldBeEquivalentTo
应该比较对象图(实际和预期的属性)。 Using...WhenTypeIs<DateTime>
将应用于类型 DateTime
的 属性 。
在你的例子中,对象是 DateTime
本身,所以你可以断言它确实是 DateTime
并链接其他所需的断言:
Attributes[key].Should().BeOfType<DateTime>().Which.Should().BeSameDateAs(DateTime.Now);