Als Konzept wird eine Liste als eine einzelne Einheit betrachtet. Aus Sicht der Lesbarkeit ist also der einzelne gültige Aufruf "a.ShouldBeEquivalentTo (b);" aus einer Ihrer Optionen wählbar.
In Bezug auf andere sind sie obskur.
Die Pluralform "ShouldAllBeEquivalentTo" wird angewendet, wenn 2 Sammlungen von Elementen verglichen werden. Ich denke, man würde argumentieren, dass wir diese Gruppe von Saiten (A) mit diesen Saitengruppen (B) vergleichen. Was hier passiert ist, die Gruppe der Strings wurde als ganzes einzelnes Konzept unter einem Listen-Datenstrukturtyp gesammelt. Daher würde ich sagen, dass es falsch ist, diesen Anruf zu verwenden.
Die letzte Form impliziert 2 Dinge. Zuerst sollte das Objekt "a" in etwas umgewandelt werden. Der Name "Should" teilt nichts mit. Danach sollte das Ergebnis verglichen werden, wenn es einem Listenobjekt "b" entspricht. Logischerweise sollte man 2 Objekte desselben Typs vergleichen. Eine zusätzliche Transformation ist nicht notwendig.
Wenn Code liest, würde ich das folgende Format bevorzugen:
Eine Liste "A" ist mit einer anderen Liste "B" gleichwertig.
List<string> a = new List<string>() { "james", "wood" };
List<string> b = new List<string>() { "james", "wood" };
//creating "IsEquivalentTo" method
bool listsAreEqual = a.IsEquivalentTo(b);
//creating "IsEqualTo" method
listsAreEqual = a.IsEqualTo(b);
//overloading operator ==
listsAreEqual = (a == b);
Ich bin verwirrt von Ihrer Antwort, die Funktionen, die ich gefragt habe, sind Funktionen von Third Party Assertion Frame Arbeit Fluent Assertions (https://github.com/dennisdoomen/fluentassertions). –