FluentAssertion在Mongo日期时间比较上失败

本文关键字:比较 失败 时间 日期 Mongo FluentAssertion | 更新日期: 2023-09-27 18:17:29

我有一个使用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,我通过最新的c#驱动程序访问。但是,它可以使用其他后端(例如Zookeeper或Consul),这些后端断言不会失败。

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

谢谢你的帮助。

FluentAssertion在Mongo日期时间比较上失败

我怀疑这两个DateTime实例的tick不同。如果是这样,您可以通过使用特定的DateTime断言BeCloseTo来解决这个问题。