2016-12-06 6 views
0

У меня есть следующий тестовый класс для актера:Несоответствие типа для expectMsg, требуется Int

class SomeActorSpec extends TestKit(ActorSystem("testSystem")) 
    with ImplicitSender 
    with WordSpecLike with MustMatchers { 

    it should "check the id of a submitted job" { 
    val tester = TestProbe() 
    val someActorRef = system.actorOf(Props(classOf[SomeActor])) 

    tester.send(someActorRef, SomeMessage(UUID.randomUUID)) 
    tester.expectMsg(SomeReply("Not running")) 
    } 

} 

я получаю эту ошибку:

type mismatch; 
[error] found : your.package.SomeReply 
[error] required: Int 
[error]  tester.expectMsg(SomeReply("Not running")) 

Почему expectMsg требуется в Int? Я просмотрел различные примеры использования expectMsg, и он смог получить подтипы класса Message.

ответ

2

Странно, он загружается неявным из другого объема. Я предлагаю вам написать (как в вашем предыдущем вопросе) таким образом:

import java.util.UUID 

import akka.actor.{Actor, ActorSystem, Props} 
import akka.testkit.{TestKit, TestProbe} 
import org.scalatest.FlatSpec 

class SomeActorSpec extends FlatSpec { 

    it should "check the id of a submitted job" in new TestScope { 
    val tester = TestProbe() 

    tester.send(someActorRef, SomeMessage(UUID.randomUUID)) 
    tester.expectMsg(SomeReply("Not running")) 
    } 

    abstract class TestScope extends TestKit(ActorSystem("testSystem")) { 
    val someActorRef = system.actorOf(Props(classOf[SomeActor])) 
    } 
} 

case class SomeMessage(v: UUID) 
case class SomeReply(msg: String) 

class SomeActor() extends Actor { 
    def receive = { 
    case msg => sender() ! SomeReply("Not running") 
    } 
} 
+0

Я получаю '[testSystem-akka.actor.default-диспетчерский-2] [Akka: // testSystem/deadLetters] Сообщение [ my.package $ StateActor $ SomeReply] от Актера [akka: // testSystem/user/$ b # 287753151] к Актеру [akka: // testSystem/deadLetters] не был доставлен. [1] Найдены мертвые буквы. Этот журнал может быть отключен или настроен с настройками конфигурации «akka.log-dead-letters» и «akka.log-dead-letters-while-shutdown». 'Что я должен исправить в коде? – octavian

+0

Я добавил 'с ImplicitSender' в' TestScope', но ошибка сохраняется. – octavian

+2

Ничего, я закрыл над отправителем. – octavian

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