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 は同じ日時を報告しますが、それでも失敗します。

その特定のケースでは、私のレジストリ バックエンドは、最新の C# ドライバーを介してアクセスする MongoDB です。ただし、特定のアサーションが失敗しない他のバックエンド (Zookeeper や Consul など) を使用できます。

だから私の推測では、問題はFluentAssertionではなく、Mongo C#ドライバーにあると思います。私はMongoでDateTimeシリアル化オプションを少し試しました(どこでもUTCを使用しており、Mongoのデフォルトでもあるようです)が、成功していません。何が間違っている可能性がありますか?

ご協力いただきありがとうございます。

4

1 に答える 1

1

DateTimeこれら 2 つのインスタンスの目盛りが異なると思われます。その場合は、特定 DateTimeのassertionsを使用してこれを回避できますBeCloseTo

于 2015-10-13T11:16:48.323 に答える