我是整个生态系统的新手,包括Scala
,Akka
和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
, JUnit
,Mockito
土地,我会在这里做的事情是
doNothing().when(logReaderDisruptor).main(Matchers.<String>anyVararg())
verify(logReaderDisruptor, times(1)).main(Matchers.<String>anyVararg())
我不确定如何在这里用 ScalaTest 翻译它。
另外,这段代码可能不是惯用的,因为我很新并且正在学习