2017-02-05 3 views
1

私はFluentAssertionと「CollectionAssert.AreEquivalent()」」の使用を置き換えるためにしようとしている。FluentAssertionsでCollectionAssert.AreEequivalent?

私はShouldAllBeEquivalentToを使用してみましたが、さまざまな種類の類似したオブジェクトを比較するときに、関数は失敗しません。

以下の例では、両方の呼び出しが成功した。私は2番目の1が失敗します。

new int[] { 1, 2 }.ShouldAllBeEquivalentTo(new int[] { 2, 1 });  
new int[] { 1, 2 }.ShouldAllBeEquivalentTo(new string[] {"1", "2"}); 

はalterantive機能や2行目は失敗するだろう特定のオプションがありますか?

+0

を何本アサートの追加について参照してください:最初にそれを削除する

てみAssert.AreEqual(list1.GetType()、list2.GetType()); ? – KernelMode

+0

@ KernelMode - これはその特定の例では機能しますが、実際のケースでは辞書<文字列、オブジェクト>が関係します。私は個々の値のランタイムの種類をチェックする必要があります。 CollectionAssertは、受け入れられた答えに詳述されたステップを追加した後、FluentAssertionsと同様にこれを行います。 – FrequentGuest

答えて

2

「はデフォルトではTryConversionEquivalencyStepが使用されており、"1"1の両方を(変換を試みた後に)等しく扱うためです。

AssertionOptions.EquivalencySteps.Remove<TryConversionEquivalencyStep>(); 

Source

+0

ありがとうございます!詳細については、FluentAssertions 5 - [関連ディスカッション](https://github.com/dennisdoomen/FluentAssertions/issues/472)のデフォルトになるようです。 – FrequentGuest

関連する問題