Scala не выдает исключение при тестировании - PullRequest
1 голос
/ 05 февраля 2020

Я не могу имитировать исключение в тесте 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")
   }
}

1 Ответ

3 голосов
/ 05 февраля 2020

Метод, который вы вызываете внутри 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")
   }
}
...