voglio mettere a confronto un elenco di oggetti, ignorando l'ordine degli oggetti nella lista e solo confrontando alcune delle proprietà negli oggetti, attualmente sto utilizzando il seguente codice per eseguire questo confronto:Come confrontare liste usando affermazioni fluenti?
actual.Should().NotBeNull();
actual.Count.Should().Be(expected.Count);
//compare ignoring order
foreach (var exp in expected)
actual.Should().Contain(act =>
act.IndividualId.Equals(exp.IndividualId)
&& act.Email.Equals(exp.Email)
&& act.FirstName.Equals(exp.FirstName)
&& act.LastName.Equals(exp.LastName)
);
Tuttavia, ciò non sembra ideale, poiché quando si verifica un errore non si ottiene una stampa dei valori previsti. Esiste un meccanismo integrato per eseguire questo confronto usando affermazioni fluenti?
È possibile dire confrontare due tipi di elenco utilizzando actual.Should(). Contain (previsto)? –
BraveNewMath
Sì, è possibile eseguire actual.Should(). BeEquivalentTo (previsto); –
per la flessibilità di solito serializziamo ogni oggetto su json, quindi usa il confronto delle stringhe, l'output dell'errore sembra buono e non hai mai bisogno di aggiornare il test dell'unità se qualcuno aggiunge una nuova proprietà –