Mit dem "sollte NICHT produzieren [Ausnahme]" die syntax in ScalaTest
Ich bin liebäugelt mit Specs2 und ScalaTest für BDD in Scala. Ich habe geschrieben, die Erwartungen Specs2, wenn ich zu behaupten, dass eine bestimmte Ausnahme sollte nicht geworfen werden.
"do something" in {
{
....
} must not(throwA[MyException])
}
Hoffte ich, schreiben zu können, den Gegenwert in ScalaTest wie:
"do something" in {
evaluating {
....
} should not produce[MyException]
}
Aber nicht kompilieren und ich konnte nicht finden die Art und Weise, es zu tun. Ist das überhaupt möglich?
Vielen Dank im Voraus.
- Interessant. Können Sie näher erläutern, was der Anwendungsfall ist? Ich würde denken, Sie würde wollen, etwas mehr spezifisch. Entweder sollte es auslösen einer bestimmten exception oder es sollte nicht werfen keine Ausnahme. Was Sie sagen, Sie wollen, um zu behaupten, dass der Ausdruck wieder normal oder werfen eine Ausnahme, außer für die, die Sie nicht sehen wollen. Wenn Sie Ihre use-case macht Sinn, die ich hinzufügen können, die "nicht" - syntax. Danke.
- wir dachten ein bisschen mehr über meine aktuellen use-case, ich denke, dass das default-Verhalten von ScalaTest (andernfalls ist der test, wenn keine Ausnahme Auftritt), wenn ausreichend. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dies nicht möglich, direkt in die neueste version von ScalaTest, weil die Methode
should
vonEvaluatingApplicationShouldWrapper
nicht eine überlastung haben, das dauert einNotWord
, nur eine, die nimmt einenResultOfProduceInvocation[T]
.Ich würde vorschlagen, lassen nur die unerwünschte Ausnahme geschehen, wird der test als nicht bestanden. Dies ist die klassische Art und Weise.
Aber wenn Sie denken, Sie brauchen mehr Klarheit über das, was nicht genau, man könnte ein
try
-catch
block um den Fehler zu behandeln. Wenn Sie den Fehler abzufangen, die Sie nicht wollen, zu geschehen, behandeln der Ausnahme durch einen Aufruf derfail
Methode:try { doSomething() } catch { case ex: SomeException => fail("Should not throw SomeException", ex) }
Die aktuelle version von ScalaTest unterstützt diese:
Sehen docs.