【发布时间】:2019-11-26 13:42:59
【问题描述】:
在我的scala 和play 代码中,函数抛出异常
case None => {
println("error in updating password info")
throw new Exception("error in updating password info") //TODOM - refine errors. Make errors well defined. Pick from config/env file
}
我想测试上面的代码,但我不知道如何测试Exception 是否被抛出。我写的规范是
"PasswordRepository Specs" should {
"should not add password for non-existing user" in {
val newPassword = PasswordInfo("newHasher","newPassword",Some("newSalt"))
when(repoTestEnv.mockUserRepository.findOne(ArgumentMatchers.any())).thenReturn(Future{None}) //THIS WILL CAUSE EXCEPTION CODE TO GET EXECUTED
val passwordRepository = new PasswordRepository(repoTestEnv.testEnv.mockHelperMethods,repoTestEnv.mockUserRepository)
println(s"adding password ${newPassword}")
val passwordInfo:PasswordInfo = await[PasswordInfo](passwordRepository.add(repoTestEnv.testEnv.loginInfo,newPassword))(Timeout(Duration(5000,"millis"))) //add SHOULD THROW AN EXCEPTION BUT HOW DO I TEST IT???
}
}
【问题讨论】:
-
这与 Mockito 无关。检查您的测试框架/断言库的 API 文档。
-
对不起,我的错。你是对的
-
从未使用过 scala,更不用说 scalaTest,但文档有一整节解释了如何做到这一点:scalatest.org/user_guide/using_assertions#expectedExceptions
标签: scalatest playframework-2.6