これに似た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 は同じ日時を報告しますが、それでも失敗します。
その特定のケースでは、私のレジストリ バックエンドは、最新の C# ドライバーを介してアクセスする MongoDB です。ただし、特定のアサーションが失敗しない他のバックエンド (Zookeeper や Consul など) を使用できます。
だから私の推測では、問題はFluentAssertionではなく、Mongo C#ドライバーにあると思います。私はMongoでDateTimeシリアル化オプションを少し試しました(どこでもUTCを使用しており、Mongoのデフォルトでもあるようです)が、成功していません。何が間違っている可能性がありますか?
ご協力いただきありがとうございます。