Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在代码中设置akka TestKit默认超时_Scala_Akka - Fatal编程技术网

Scala 在代码中设置akka TestKit默认超时

Scala 在代码中设置akka TestKit默认超时,scala,akka,Scala,Akka,在非配置代码中为TestProbe.expectNoMsg()设置默认超时的正确方法是什么 我知道我可以在application.conf中定义akka.test.single expect default,但这适用于我模块中的所有测试。或者类似的 ActorSystem(.., ConfigFactory.parseString("{akka.test.single-expect-default = 0}")) 在代码中工作,但我希望能够像这样设置此超时 implicit val timeo

在非配置代码中为
TestProbe.expectNoMsg()
设置默认超时的正确方法是什么

我知道我可以在application.conf中定义
akka.test.single expect default
,但这适用于我模块中的所有测试。或者类似的

ActorSystem(.., ConfigFactory.parseString("{akka.test.single-expect-default = 0}"))
在代码中工作,但我希望能够像这样设置此超时

implicit val timeout = Timeout(100 millis)
我已经看过了,但没有被认可

我的测试是

@RunWith(classOf[JUnitRunner])
class MySuite extends path.FunSpec with Matchers {

    implicit val system = ActorSystem("MySuite")

    val probe = new TestProbe(system)

    describe ("timeout") {
        println("Waiting..")
        probe.expectNoMsg()
        println("Waited")
    }
}
你想设定吗

akka.test.single-expect-default

在您的配置中,这是不可能的。但是您可以为
TestProbe
创建自己的Decorator,该Decorator可以保存
TestProbe
的一个实例,并有一个
expectNoMsg()
方法,其中包含一个隐式超时参数。或者您可以在需要时使用
def-expectNoMsg(max:FiniteDuration)
并明确指定超时。我同意@SergiyPrydatchenko的观点,即您应该首先尝试使用
def-expectNoMsg(max:FiniteDuration)
方法。如果这对您不起作用,那么您可以使用隐式类pimp
TestProbe
,以提供您所寻求的行为。事实上,我认为以上应该添加一个拉皮条的代码示例作为答案。@cmbaxter
expectNoMsg(Zero)
是我正在使用的,它工作正常。令人惊讶的是,由于testkit提供了no-arg
expectNoMsg()
,我无法自定义超时,除非通过
Config
方法。谢谢,但我在文章中提到了为什么这不是理想的。