2016-12-06 2 views
0

必要:型の不一致、私は俳優のために、次のテストクラスを持っているの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")) 

はなぜexpectMsgIntを必要としますか? expectMsgを使用した異なる例を見て、クラスのサブタイプを受け取ることができました。

答えて

2

奇妙なことに、それは別のスコープから暗黙的に読み込まれます。 [メッセージ:私は `[// testSystem/deadLettersアッカ]を[testSystem-akka.actor.default-ディスパッチャ-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

:私はあなたが(以前の質問のように)このように書くことをお勧めアクター[akka:// testSystem/user/$ b#287753151]からアクター[akka:// testSystem/deadLetters]へのmy.package $ StateActor $ SomeReply]は配信されませんでした。 [1]デッドレターが発生しました。このロギングは、構成設定「akka.log-dead-letters」と「akka.log-dead-letters-during-shutdown」を使用して、オフまたは調整できます。 'コードで何を修正すればよいですか? – octavian

+0

'With ImplicitSender'を' TestScope'に追加しましたが、エラーはそのままです。 – octavian

+2

心配しないで、私は送付者を閉鎖していました。 – octavian

関連する問題