Korzystanie biegle twierdzeń, chciałbym stwierdzić, że dany ciąg zawiera jedną z dwóch ciągów:Zaawansowany twierdzenia: dochodzić jeden lub inną wartość
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
Tylko jeżeli żadna z wartości zawarte jest twierdzenie powinien zawieść. To NIE działa (nawet nie kompiluje), ponieważ nie ma operatora Or()
.
ten sposób zrobić to teraz:
bool isVariant1 = actual.Contains(@"oneWay");
bool isVariant2 = actual.Contains(@"anotherWay");
bool anyVariant = (isVariant1 || isVariant2);
anyVariant.Should().BeTrue("because blahblah. Actual content was: " + actual);
Jest gadatliwy, a „ponieważ” argument musi uzyskać tworzone ręcznie, które mają znaczący wynik.
Czy istnieje sposób, aby to zrobić w bardziej czytelny sposób? Rozwiązanie powinno mieć zastosowanie również do innych rodzajów płynnych twierdzenia jak Be()
, HaveCount()
etc ...
Używam FluentAssertions wersji 2.2.0.0 na .NET 3.5, jeśli to się liczy.
W rzeczywistości, gdy to się nie powiedzie, nie masz pojęcia, co jest nie tak. –