我有一个使用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# driver访问它。但是,它可以使用特定断言不会失败的其他后端(例如 Zookeeper 或 Consul)。
所以我的猜测是问题来自 Mongo C# 驱动程序,而不是来自 FluentAssertion。我在 Mongo 中使用了 DateTime 序列化选项(我在任何地方都使用 UTC,这似乎也是 Mongo 的默认设置),但没有成功。知道可能出了什么问题吗?
谢谢你的帮助。