我使用类似的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的默认选项),但没有成功。知道什么可能是错的吗?
感谢您的帮助。