Я пытаюсь написать модульные тесты для своего актера и застрял в основном насмешке. PriceAggregateActor использует постоянство akka, и я не хочу передавать всю конфигурацию для него и хотел бы полностью издеваться над ним.
Это актер, которого я хочу проверить
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? Он не должен принимать никаких аргументов конструктора.