Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using the "should NOT produce [exception]" syntax in ScalaTest

I'am toying with Specs2 and ScalaTest for BDD in Scala. I've written expectations in Specs2 when I am asserting that a given exception should not be thrown.

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

I was hoping to be able to write the equivalent in ScalaTest like:

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

But this does not compile and I could not find way of doing it. Is that even possible?

Many thanks in advance.

like image 403
Guillaume Belrose Avatar asked Aug 09 '11 10:08

Guillaume Belrose


2 Answers

The current version of ScalaTest does support this:

noException should be thrownBy 0 / 1

See docs.

like image 116
Wolfram Arnold Avatar answered Sep 19 '22 08:09

Wolfram Arnold


This is not possible directly in the latest version of ScalaTest because the method should of EvaluatingApplicationShouldWrapper does not have an overload that takes a NotWord, only one that takes a ResultOfProduceInvocation[T].

I'd suggest just letting the undesired exception happen, which will fail the test. This is the classic way.

But if you feel you need more clarity about what failed exactly, you could use a try-catch block to handle the error. If you catch the error you don't want to happen, handle the exception with a call to the fail method:

fail("That expression shouldn't have thrown a MyExceptionType exception")
like image 29
traffichazard Avatar answered Sep 19 '22 08:09

traffichazard