0

我有一个使用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 的默认设置),但没有成功。知道可能出了什么问题吗?

谢谢你的帮助。

4

1 回答 1

1

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

于 2015-10-13T11:16:48.323 回答