0

ScalaAkkaおよびを含むエコシステム全体に不慣れです。ScalaTest

Actor外部システムへの呼び出しを行う問題に取り組んでいます。

case object LogProcessRequest

class LProcessor extends Actor {
  val log = Logging(context.system, this)

  def receive = {
    case LogProcessRequest =>
      log.debug("starting log processing")
      LogReaderDisruptor main(Array())
  }
}

LogReaderDisruptor main(Array())Java他の多くのことを行うクラスです。

私が現在持っているテストは次のようになります

class LProcessorSpec extends UnitTestSpec("testSystem") {

  "A mocked log processor" should {
    "be called" in  {
      val logProcessorActor = system.actorOf(Props[LProcessor])
      logProcessorActor ! LogProcessRequest
    }
  }
}

どこUnitTestSpecのように見えますか(そしてここからインスピレーションを得ました)

import akka.actor.ActorSystem
import akka.testkit.{ImplicitSender, TestKit}
import org.scalatest.matchers.MustMatchers
import org.scalatest.{BeforeAndAfterAll, WordSpecLike}

abstract class UnitTestSpec(name: String)
  extends TestKit(ActorSystem(name))
  with WordSpecLike
  with MustMatchers
  with BeforeAndAfterAll
  with ImplicitSender {

  override def afterAll() {
    system.shutdown()
  }
}

質問

  • 呼び出しをモックしてLogReaderDisruptor main(Array())、それが呼び出されたことを確認するにはどうすればよいですか?

私は、、土地から来て、Javaここで私がしたであろうことは JUnitMockito

doNothing().when(logReaderDisruptor).main(Matchers.<String>anyVararg())
verify(logReaderDisruptor, times(1)).main(Matchers.<String>anyVararg())

ここで ScalaTest を使用してそれを翻訳する方法がわかりません。

また、私は非常に新しく学習しているので、このコードは慣用的ではないかもしれません

4

1 に答える 1