【问题标题】:FluentAssertion failing on Mongo DateTime comparisonsFluentAssertion 在 Mongo DateTime 比较中失败
【发布时间】:2016-01-10 22:36:00
【问题描述】:

我有一个使用 FluentAssertion 的单元测试,类似于:

var instance = new ServiceInstance(name, "1.0.0", new Uri("http://www.google.com"));

var id = registry.RegisterInstance(instance);
registry.ExistsInstance(id).Should().BeTrue();

var queryiedInstance = registry.QueryForInstance(id);
queryiedInstance.ShouldBeEquivalentTo(instance);

最新的断言失败并显示以下消息:

Result Message: 
Expected member RegistrationData.RegistrationTime to be <2015-10-13 08:36:20.619>, but found <2015-10-13 08:36:20.619>.
Expected member RegistrationData.LastActivationTime to be <2015-10-13 08:36:20.619>, but found <2015-10-13 08:36:20.619>.
Expected member RegistrationData.LastPinged to be <2015-10-13 08:36:20.619>, but found <2015-10-13 08:36:20.619>.

如您所见,FluentAssertion 报告相同的日期时间,但仍然失败。

在这种特定情况下,我的注册表后端是 MongoDB,我通过 the latest C# driver 访问它。但是,它可以使用特定断言不会失败的其他后端(例如 Zookeeper 或 Consul)。

所以我的猜测是问题来自 Mongo C# 驱动程序,而不是来自 FluentAssertion。我在 Mongo 中使用了 DateTime 序列化选项(我在任何地方都使用 UTC,这似乎也是 Mongo 的默认设置),但没有成功。知道可能出了什么问题吗?

感谢您的帮助。

【问题讨论】:

    标签: c# mongodb fluent-assertions


    【解决方案1】:

    我怀疑这两个 DateTime 实例的滴答声不同。如果这是真的,您可以使用specific DateTime 断言BeCloseTo 来解决这个问题。

    【讨论】:

    猜你喜欢
    • 2013-10-29
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    相关资源
    最近更新 更多