aşağıdaki Subscriber
soyut temel sınıf var:Akka Kümesindeki bir Abonenin alım yöntemini nasıl test edebilirim?
abstract class Subscriber(topics: Seq[String]) extends Actor with ActorLogging {
import DistributedPubSubMediator.{ Subscribe, SubscribeAck }
val mediator = DistributedPubSub(context.system).mediator
// subscribe to each topic
topics.foreach{mediator ! Subscribe(_, self)}
def receive = {
case SubscribeAck(Subscribe(name, None, `self`)) ⇒
log.info(s"Subscribing to $name")
}
}
Ve bunu bir alt sınıf abone olduğu için konulara yayınlanmaktadır mesajları aldığı test etmek istiyorum. Belirli aktörler TestProbe
yoluyla olduğunu ulaşan mesajların hakkında iddialarda bulunan bilmek
val topic = "foo"
class FooSubscriber extends Subscriber(Seq(topic))
val fooSubActor = system.actorOf(Props[FooSubscriber])
val mediator = DistributedPubSub(system).mediator
val msg = "This is a string"
// Publish the msg to the "foo" topic.
mediator ! Publish(topic, msg)
fooSubActor.expectMsg(msg)
tek yolu, ama ben bir TestProbe
uzatmak yapabilir bilmiyorum: göstermektedir Bazı basit yalancı kod şudur sınıfım.
Genellikle, Akka docs, ilişkili test paketleriyle birlikte bir örnek kod içeriyor, ancak receive
yöntemini test etmekle ilgili Akka Cluster belgelerinde hiçbir şey bulamadım.
Herhangi bir öneri var mı?
Bir klik, bir alıcı bir şey aldığında ve üye değişkeni benim sınamamda ayarlandığını iddia ettiğinde, bir alıcı değişkeni "al" işlevini geçersiz kılmak ve değiştirmektir ... ancak bu kötüdür. Daha idiomatik bir test yaklaşımı arıyorum. – erip