Использование синтаксиса «НЕ ДОЛЖЕН вызывать [исключение]» в ScalaTest - PullRequest
25 голосов
/ 09 августа 2011

Я играю со Specs2 и ScalaTest для BDD в Scala. Я написал ожидания в Specs2, когда я утверждаю, что данное исключение не должно быть выброшено.

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

Я надеялся написать эквивалент в ScalaTest, например:

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

Но это не компилируется, и я не мог найти способ сделать это. Это вообще возможно?

Заранее большое спасибо.

Ответы [ 2 ]

46 голосов
/ 07 января 2016

Текущая версия ScalaTest поддерживает это:

noException should be thrownBy 0 / 1

См. документы .

6 голосов
/ 09 августа 2011

Это невозможно сделать напрямую в последней версии ScalaTest, поскольку метод should из EvaluatingApplicationShouldWrapper не имеет перегрузки, которая принимает NotWord, только такую, которая принимает ResultOfProduceInvocation[T].

Я бы предложил просто допустить нежелательное исключение, которое провалит тест. Это классический способ.

Но если вы чувствуете, что вам нужно больше ясности относительно того, что именно не удалось, вы можете использовать блок try - catch для обработки ошибки. Если вы поймете ошибку, которую не хотите возникать, обработайте исключение с помощью вызова метода fail:

fail("That expression shouldn't have thrown a MyExceptionType exception")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...