我有一个使用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的默认设置),但没有成功。你知道有什么问题吗?
谢谢你的帮助。
我怀疑这两个DateTime
实例的tick不同。如果是这样,您可以通过使用特定的DateTime
断言BeCloseTo
来解决这个问题。