MluentAssertion在Mongo DateTime比较中失败

时间:2015-10-13 08:54:41

标签: c# mongodb fluent-assertions

我使用类似的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会报告相同的日期时间,但仍会失败。

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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