Как проверить дополнительные свойства ожидаемых исключений с помощью ScalaTest
Я использую ScalaTest для тестирования некоторого кода Scala. В настоящее время я тестирую ожидаемые исключения с таким кодом
import org.scalatest._
import org.scalatest.matchers.ShouldMatchers
class ImageComparisonTest extends FeatureSpec with ShouldMatchers{
feature("A test can throw an exception") {
scenario("when an exception is throw this is expected"){
evaluating { throw new Exception("message") } should produce [Exception]
}
}
}
но я хотел бы добавить дополнительную проверку исключения, например, я хотел бы проверить, что сообщение об исключениях содержит определенную строку.
есть ли "чистый" способ сделать это? Или мне нужно использовать блок try catch?
3 ответов
Я нашел решение
val exception = intercept[SomeException]{ ... code that throws SomeException ... }
// you can add more assertions based on exception here
вы можете сделать то же самое с оценки ... должен создавать синтаксис, потому что, как и intercept, он возвращает пойманное исключение:
val exception =
evaluating { throw new Exception("message") } should produce [Exception]
затем проверьте исключение.
Если нужно дополнительно проверить ожидаемое исключение, вы можете захватить его, используя следующий синтаксис:
val thrown = the [SomeException] thrownBy { /* Code that throws SomeException */ }
Это выражение возвращает пойманное исключение, чтобы вы могли проверить его дальше:
thrown.getMessage should equal ("Some message")
вы можете также захватить и проверить ожидаемое исключение в одном заявлении, например:
the [SomeException] thrownBy {
// Code that throws SomeException
} should have message "Some message"