C# 如何正确结合使用和WhenTypeIs<;日期时间>;口若悬河

C# 如何正确结合使用和WhenTypeIs<;日期时间>;口若悬河,c#,fluent-assertions,C#,Fluent Assertions,我有这样一个对象字典:Attributes=newdictionary() 字典中有一个DateTime,我正在尝试测试该DateTime是否在某一特定的日期,如下所示: Attributes[key].ShouldBeEquivalentTo(DateTime.Now, options => options .Using<DateTime>(ctx => { //throw new InvalidOperationException();

我有这样一个对象字典:
Attributes=newdictionary()

字典中有一个
DateTime
,我正在尝试测试该
DateTime
是否在某一特定的日期,如下所示:

Attributes[key].ShouldBeEquivalentTo(DateTime.Now, options => options
    .Using<DateTime>(ctx =>
    {
        //throw new InvalidOperationException();
        ctx.Subject.Should().BeSameDateAs(ctx.Expectation);
    }).WhenTypeIs<DateTime>());
Attributes[key]。应该等效于(DateTime.Now,options=>options
.使用(ctx=>
{
//抛出新的InvalidOperationException();
ctx.Subject.Should().BeSameDateAs(ctx.expection);
}).WhenTypeIs());
但是,这会导致失败的断言
预期的主题是,但找到了
。日期是同一天,所以我认为应该过去,但断言失败了

这使我得出结论,没有应用行
ctx.Subject.Should().besamedatas(ctx.Expectation)
。我尝试添加一个异常,并进行调试,但似乎无法访问操作中的代码


我应该期待这项工作吗?我这样做是正确的?

由于应该等价于应该比较对象图(实际和预期的属性),所以永远不会到达运行中的代码<代码>使用…WhenTypeIs
将应用于
日期时间类型的属性

在您的例子中,对象是
DateTime
本身,因此您可以断言它确实是
DateTime
,并链接其他必需的断言:

Attributes[key].Should().BeOfType<DateTime>().Which.Should().BeSameDateAs(DateTime.Now);
Attributes[key].Should().BeOfType().Which.Should().BeSameDateAs(DateTime.Now);

由于
应该等价于
应该比较对象图(实际和预期的属性),所以永远不会到达实际的代码<代码>使用…WhenTypeIs
将应用于
日期时间类型的属性

在您的例子中,对象是
DateTime
本身,因此您可以断言它确实是
DateTime
,并链接其他必需的断言:

Attributes[key].Should().BeOfType<DateTime>().Which.Should().BeSameDateAs(DateTime.Now);
Attributes[key].Should().BeOfType().Which.Should().BeSameDateAs(DateTime.Now);

我不知道这个API,所以这只是一个猜测:试试
options.WhenTypeIs()。使用(…)
所以基本上你是在测试存储在
对象中的
DateTime
?@AlekseyL。差不多,我想我应该补充一点,不是
object
将是
DateTime
@JamesWood对象的属性之一将是
DateTime
?你能添加具体的例子吗?@AlekseyL。很抱歉,我没有很好地解释这个词,我的意思是集合可能还包含除
日期时间
以外的内容,例如
字符串
。上面是我的原始问题的简化版本,我试图有选择地比较两个集合中的值。事实上,我用另一种方式解决了这个问题。在任何情况下,你的答案似乎都准确地说明了
的用法应该与
的用法相同,这就是这个问题的内容。:)我不知道这个API,所以这只是一个猜测:试试
options.WhenTypeIs()。使用(…)
,基本上你是在测试存储在
object
?@AlekseyL中的
DateTime
。差不多,我想我应该补充一点,不是
object
将是
DateTime
@JamesWood对象的属性之一将是
DateTime
?你能添加具体的例子吗?@AlekseyL。很抱歉,我没有很好地解释这个词,我的意思是集合可能还包含除
日期时间
以外的内容,例如
字符串
。上面是我的原始问题的简化版本,我试图有选择地比较两个集合中的值。事实上,我用另一种方式解决了这个问题。在任何情况下,你的答案似乎都准确地说明了
的用法应该与
的用法相同,这就是这个问题的内容。:)