アクターの単体テストを作成しようとしていますが、基本的なモックに固執しています。PriceAggregateActor は akka の永続性を使用しており、すべての conf を渡したくなく、完全にモックしたいと考えています。
これは私がテストしたい俳優です
object CommandPriceActor {
def apply() = Props(classOf[CommandPriceActor], PriceAggregateActor())
}
class CommandPriceActor(priceAggregateActorProps: Props) extends Actor with ActorLogging {
val priceAggregateActor = context.actorOf(priceAggregateActorProps, "priceAggregateActor")
だから私のテストでは、次のようなことをしようとしています:
class CommandPriceActorTest extends TestKit(ActorSystem("test-benefits",
ConfigFactory.parseString("""akka.loggers = ["akka.testkit.TestEventListener"] """))) with FlatSpecLike with Matchers
with BeforeAndAfterAll with Eventually{
class MockedChild extends Actor {
def receive = {
case _ => lala
}
}
val probe = TestProbe()
val commandPriceActor = TestActorRef(new CommandPriceActor(Props[MockedChild]))
私はいつも得ています:
Caused by: java.lang.IllegalArgumentException: no matching constructor found on class CommandPriceActorTest$MockedChild for arguments []
なぜそれはmockedChildについて不平を言っているのですか? コンストラクター引数を取らないでください。