我的服务中有一个函数,它接受一些jvalue数据,提取它并返回一些模型。
def getInstanceOf(data: JValue, aType: String): Living = aType match {
case "person" => data.extract[Person]
case "animal" => data.extract[Animal]
}
在我的测试中我想用坏数据调用这个函数,看看提取失败了。所以我试过了:
val res = myService.getInstanceOf(badData, "person")
res shouldBe a[MappingException]
并且它不起作用,因为在我的测试类中我正在注入服务并使用服务功能,因此在服务中发生故障并且我没有收到错误。我甚至没有到达res shouldBe a[MappingException]
,当我调用该函数时它失败了。
我该怎么做?
答案 0 :(得分:1)
您可以使用thrownBy
存储例外:
val res = the [MappingException] thrownBy myService.getInstanceOf(badData, "person")
或直接检查:
a [MappingException] should be thrownBy myService.getInstanceOf(badData, "person")
有关详细信息,请参阅documentation。
答案 1 :(得分:0)
以下应该有效
import scala.util.{Failure, Try}
val Failure(th) = Try(myService.getInstanceOf(badData, "person"))
res shouldBe a[MappingException]