scala アクターのテストを書き始めました。このブログを読みました。http://blog.matthieuguillermin.fr/2013/06/akka-testing-your-actors/ それから始めました。私はアプリケーションアクターを書きました。しかし、他とは違うアプリケーション アクターがブログにいることに気付きました。役者がメインクラスだから。コンソールに文字列を書き込み、別のアクターにメッセージを送信しました。アプリケーション アクターをテストするにはどうすればよいですか?
class Application extends Actor{
val cliCommandExecute = context.actorOf(Props[CLICommandExecute],"CLICommandExecute")
println(Util.welcomeMessage)
cliCommandExecute ! CLICommandExecute.Listen(self)
def receive = {
case CLICommandExecute.Done(result: String) => {
println(result)
cliCommandExecute ! CLICommandExecute.Listen(self)
}
case CLICommandExecute.Failed(result: String) => {
println(result)
println(Util.failedMessage)
context.stop(self)
}
case CLICommandExecute.Exit => {
println(Util.exitMessage)
context.stop(self)
}
}
}
ApplicationTest を書きました。しかし、実行すると、テスト結果が失敗しました。
class ApplicationTest extends TestKit(ActorSystem("testSystem"))
with WordSpecLike
with Matchers {
"A application actor" must {
// Creation of the TestActorRef
val actorRef = TestActorRef[Application]
val result = "success"
"receive messages" in {
// This call is synchronous. The actor receive() method will be called in the current thread
actorRef ! CLICommandExecute.Done(result)
// This method assert that the testActorRef has received a specific message
expectMsg("success")
}
}
}
エラーは次のとおりです。
assertion failed: timeout (3 seconds) during expectMsg while waiting for success
java.lang.AssertionError: assertion failed: timeout (3 seconds) during expectMsg while waiting for success
どうすれば続行できますか?