Я начал писать тест для актера scala. Я прочитал этот блог. http://blog.matthieuguillermin.fr/2013/06/akka-testing-your-actors/ Тогда я начал. Я написал Application Actor. Но я понял, что актер приложения, который отличается от других, находится в блоге. Потому что актер является основным классом. Он написал строку на консоли и отправил сообщение другому актеру. Как я могу протестировать приложение?Как протестировать актер - основной класс с testkit в scala
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
Как я могу продолжить?
Благодарим вас за ответ. Но все же ошибка дана. Пожалуйста, введите команду: success [INFO] [08/06/2015 15: 40: 09.069] [testSystem-akka.actor.default-dispatcher-2] [akka: // testSystem/deadLetters] Сообщение [com.console.app.CLICommandExecute $ Listen] из TestActor [akka: // testSystem/user/$$ a] для Актера [akka: // testSystem/deadLetters] не доставлено. [1] Найдены мертвые буквы. Этот журнал может быть отключен или настроен с настройками конфигурации «akka.log-dead-letters» и «akka.log-dead-letters-while-shutdown». утверждение не выполнено: таймаут (3 секунды) во время ожиданияMsg во время ожидания успеха –
обновил ответ – ka4eli
В обычной программе работает так, как я хочу, путь. Но я хочу написать тест. В тесте есть ошибки –