Utilizzando asserzioni fluenti, desidero affermare che una determinata stringa contiene uno di due stringhe:asserzioni fluente: asserire uno o un altro valore
actual.Should().Contain("oneWay").Or().Should().Contain("anotherWay");
// eiter value should pass the assertion.
// for example: "you may do it oneWay." should pass, but
// "you may do it thisWay." should not pass
Solo se nessuno dei valori è contenuto, l'asserzione dovrebbe fallire. Questo NON funziona (nemmeno compilando) in quanto non esiste un operatore Or()
.
Questo è come lo faccio ora:
bool isVariant1 = actual.Contains(@"oneWay");
bool isVariant2 = actual.Contains(@"anotherWay");
bool anyVariant = (isVariant1 || isVariant2);
anyVariant.Should().BeTrue("because blahblah. Actual content was: " + actual);
Questa è prolisso, e il "perché" argomento deve ottenere creato manualmente per avere un output significativo.
C'è un modo per farlo in un modo più leggibile? Una soluzione dovrebbe applicarsi anche ad altri tipi di asserzione fluenti, come Be()
, ecc ... HaveCount()
Sto usando la versione 2.2.0.0 FluentAssertions su .NET 3.5, se quello che conta.
In realtà, quando questo non funziona, non hai idea di cosa non funzioni. –