簡體   English   中英

Scala 在測試時不會拋出異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM