2017-02-18 1 views
0

У меня есть функция в моей службе, которая принимает некоторые данные 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], он терпит неудачу, когда я вызываю функцию.

Как это сделать правильно?

ответ

1

Вы можете использовать thrownBy для хранения исключение:

val res = the [MappingException] thrownBy myService.getInstanceOf(badData, "person") 

или проверить непосредственно:

a [MappingException] should be thrownBy myService.getInstanceOf(badData, "person") 

Смотрите documentation для более подробной информации.

0

ниже должен работать

import scala.util.{Failure, Try} 
val Failure(th) = Try(myService.getInstanceOf(badData, "person")) 
res shouldBe a[MappingException] 
Смежные вопросы