[英]Scala does not throw Exception while testing
我無法模擬在 Scala 測試中拋出異常。 獲取錯誤:預期拋出異常 java.lang.Exception,但未拋出異常
test("test with Exception"){
val generatorService=mock[GeneratorService]
val entityProviderRequest=new EntityProviderRequest(entity:Entity)
when(generatorService.generateVertex(entityProviderRequest.entity, "abc")).thenThrow(new RuntimeException)
intercept[Exception]{
generatorService.generateElements(entityProviderRequest, "abc")
}
}
您在intercept
調用的方法與您在上面定義的方法不同。 這就是它不會拋出異常的原因。 當行為未定義時,模擬對象僅返回null
。 下面的測試應該會成功。
test("test with Exception"){
val generatorService = mock[GeneratorService]
val entityProviderRequest = new EntityProviderRequest(entity)
when(generatorService.generateElements(entityProviderRequest, "abc"))
.thenThrow(new RuntimeException)
intercept[Exception]{
generatorService.generateElements(entityProviderRequest, "abc")
}
}
更新
如果你想使用一個方法的真實實現,但模擬其他方法,你可以通過使用when(..).thenCallRealMethod()
來實現它:
test("test with Exception"){
val generatorService = mock[GeneratorService]
val entityProviderRequest = new EntityProviderRequest(entity)
when(generatorService.generateElements(entityProviderRequest, "abc"))
.thenCallRealMethod()
when(generatorService.generateVertex(entityProviderRequest.entity, "abc"))
.thenThrow(new RuntimeException)
intercept[Exception]{
generatorService.generateElements(entityProviderRequest, "abc")
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.