31

私は Scala で BDD の Specs2 と ScalaTest をいじっています。特定の例外がスローされるべきではないと主張するとき、私は Specs2 に期待を書きました。

"do something" in {
 {
   ....
 } must not(throwA[MyException])
}

私はScalaTestで同等のものを次のように書けることを望んでいました:

"do something" in {
 evaluating {
   ....
 } should not produce[MyException]
}

しかし、これはコンパイルされず、それを行う方法が見つかりませんでした。それは可能ですか?

よろしくお願いします。

4

2 に答える 2

71

ScalaTest の現在のバージョンはこれをサポートしています:

noException should be thrownBy 0 / 1

ドキュメントを参照してください。

于 2016-01-06T23:51:02.653 に答える
6

shouldのメソッドにはを受け取るEvaluatingApplicationShouldWrapperオーバーロードがなく、 を受け取るのNotWordResultOfProduceInvocation[T].

テストに失敗する望ましくない例外が発生するようにすることをお勧めします。これが古典的な方法です。

しかし、正確に何が失敗したかを明確にする必要があると感じた場合は、エラーを処理するためにtry-catchブロックを使用できます。発生させたくないエラーをキャッチした場合は、failメソッドを呼び出して例外を処理します。

fail("That expression shouldn't have thrown a MyExceptionType exception")
于 2011-08-09T11:26:21.820 に答える