【发布时间】:2016-11-02 10:08:29
【问题描述】:
我有一个这样的对象字典: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) 行没有被应用。我尝试添加异常并进行调试,但似乎永远无法到达操作中的代码。
我应该期待这项工作吗?我这样做对吗?
【问题讨论】:
-
我不知道这个API,所以这只是一个猜测:试试
options.WhenTypeIs<DateTime>().Using<DateTime>(...) -
所以基本上你正在尝试测试存储在
object中的DateTime? -
@AlekseyL。差不多,我想我应该补充一点,不是
object将是DateTime。 -
@JamesWood 对象的属性之一是
DateTime?你能添加具体的例子吗? -
@AlekseyL。抱歉,我说的不是很好,我的意思是该集合还可能包含
DateTime以外的其他内容,例如一个string。以上是我最初的问题的简化版本,我试图有选择地比较来自两个集合的值。我实际上以不同的方式解决了这个问题。无论如何,您的回答似乎准确地解决了ShouldBeEquivalentTo的使用问题,这就是这个问题的意义所在。 :)
标签: c# fluent-assertions