2012-03-09 1 views
3

J'écris des tests unitaires pour les acteurs Akka et je veux vérifier les entrées du journal; par exemple. test xyz a écrit dans la catégorie d'erreur. (Vous savez, disons que j'envoie un message à un acteur via! Au lieu de?)akka - test d'une entrée de journal particulière

Dans l'acteur, j'écrirai pour enregistrer une erreur ou une information ou un déboguage, etc. en fonction du résultat du message traité par "recevoir".

Pour akka 1.2 ou 1.3, comment dois-je procéder? Exemple: ajouter un nouvel écouteur à EventHandler? D'autres idées?

Merci à l'avance, Todd

Répondre

3

John a traité les points essentiels dans sa réponse déjà (je conduit le message au testActor au lieu d'utiliser un TestLatch, mais qui est une question de goût). Je sais que cela ne correspond pas à vos exigences, mais peut-être que ce qui suit peut vous attirer dans Akka 2.0?

EventFilter.error(message = "some message", occurrences = 1) intercept { 
    // do something which should trigger such a log message 
} 

Ces installations proviennent du akka-Testkit, en particulier akka.testkit.TestEventListener et akka.testkit.EventFilter. Le code ci-dessus attendra jusqu'à trois secondes (configurable dans "akka.test.filter-leeway") pour que le message apparaisse et donnera un message d'erreur informatif si cela ne se produit pas.

+7

Quelque chose qui m'a attrapé. Dans Akka 2.1, vous l'activez avec la configuration 'akka.event-handlers = [" akka.testkit.TestEventListener "]'. En 2.2 cela a changé en 'akka.loggers = [" akka.testkit.TestEventListener "]'. [Docs] (http://doc.akka.io/docs/akka/2.2-M3/scala/testing.html#Expecting_Log_Messages) – theon