Я пытаюсь написать свойство, которое в основном гласит: «оно должно либо не генерировать исключение, либо генерировать одно из списка возможных исключений», используя ScalaTest, и это GeneratorDrivenPropertyChecks
, которое, в свою очередь, использует scalatest. Проблема в том, что я не смог объединить noException
с логическим или, поэтому лучшее, что я мог сделать, это этот уродливый тест:
it should "not throw unexpected exceptions" in {
forAll { (s: String) =>
try { parse(s) }
catch { case e:Throwable => e shouldBe a [ParsingFailedException] }
true shouldBe true // prevent compile error
}}
То, что я хотел бы видеть вместо этого, будет больше похоже на
it should "not throw unexpected exceptions" in {
forAll { (s: String) => {
(noException should Be thrownBy) or (a [ParsingFailedException] shouldBe thrownBy) { parse(s) }
}}