Используя беглые утверждения, я хотел бы утверждать, что данная строка содержит либо один из двух строк:Fluent утверждение: Assert одно или другое значение
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
Только если ни одно из значений содержатся, утверждения должен потерпеть неудачу. Это НЕ работает (даже не компилируется), так как нет оператора Or()
.
Это, как я сделать это сейчас:
bool isVariant1 = actual.Contains(@"oneWay");
bool isVariant2 = actual.Contains(@"anotherWay");
bool anyVariant = (isVariant1 || isVariant2);
anyVariant.Should().BeTrue("because blahblah. Actual content was: " + actual);
Это многословным, а «потому что» аргумент должен получить созданный вручную, чтобы иметь содержательный вывод.
Есть ли способ сделать это более читаемым образом? Раствор должен также применяться к другим типам беглых утверждений, как Be()
, HaveCount()
и т.д ...
Я использую FluentAssertions версии 2.2.0.0 на .NET 3.5, если это имеет значение.
Фактически, когда это не удается, вы не знаете, что случилось. –