2015-12-24 2 views
0

Я новичок в Скале Akkaкак проверить Akka действий с expectMsgClass

в моем тестовом коде у меня есть этот

val sendEmailActor = system.actorOf(SendEmailActor.props) 

    sendEmailActor ! email 

    expectMsgClass(SendEmailActor.SendEmailResult.getClass) 

, но я получил тест неудачу.

java.lang.AssertionError: assertion failed: 
expected class vndirect.elasticemail.actor.SendEmailActor$SendEmailResult$, 
found class vndirect.elasticemail.actor.SendEmailActor$SendEmailResult 

Так что мой SendEmailActor возвращают SendEmailResult, как и ожидалось. Но тестовое устройство терпит неудачу. Я не знаю почему. В чем разница между SendEmailActor$SendEmailResult$ и SendEmailActor$SendEmailResult

ответ

2

Вы, наверное, есть что-то вроде

object SendEmailActor { 
    ... 
    case class SendEmailResult(some arguments) 
    object SendEmailResult // may be compiler generated 
} 

class SendEmailActor { 
    // has ... ! SendEmailResult(...) in some method 
} 

SendEmailActor.SendEmailResult.getClass является класс object SendEmailResult. Класс class SendEmailResult - classOf[SendEmailActor.SendEmailResult], так что это тот, который вы ожидаете.

+0

спасибо за ваше четкое объяснение. Я изменил свой код на 'classOf [SendEmailActor.SendEmailResult]', он сработал! –

0

Я пришел к этому вопросу с аналогичной проблемой, но предложенный ответ не сработал. Моя задача состояла в том, чтобы проверить прибытие простого класса case, используемого в качестве сообщения Akka.

Решение заключалось в использовании:

expectMsgType[Message] 

вместо expectMsgClass. (Примечание «Тип» вместо «Класс».)

Смежные вопросы