0
我已經嘗試了六種不同的方法,但似乎無法修改演員詢問的默認超時值。這意味着它幾乎總是在CI服務器上失敗。在akka測試工具包中修改詢問超時
這是我目前的迭代。有幾個捆綁在一起的嘗試。他們都沒有做任何修改超時值從1秒。
基礎測試類
import akka.actor.ActorSystem
import akka.testkit.TestKit
import com.typesafe.config.ConfigFactory
import org.specs2.mutable.SpecificationLike
import org.specs2.specification.AfterEach
import org.specs2.specification.core.Fragments
abstract class TestActors
extends TestKit(ActorSystem("testsystem", ConfigFactory.load("test-application.conf")))
with SpecificationLike
with AfterEach {
override def map(fs: => Fragments) = super.map(fs)^step(system.terminate, global = true)
def after = system.terminate()
}
規格
class RepoSpec(implicit ee: ExecutionEnv) extends TestActors {
isolated
implicit val timeout = Timeout(5 seconds)
val repo = system.actorOf(Props(classOf[Repo], data))
"return None when there's no such record" >> {
implicit val timeout = Timeout(30 seconds)
val record = repo ? GetRecord(1, RecordKey(1, 1, 1))
record must beEqualTo(Option.empty[Record]).await
}
}
的src /測試/資源/測試application.conf
akka.test {
timefactor=10
single-expect-default=5000
}
在規格上我的筆記本電腦完成,但特拉維斯失敗:
[error] x return None when there's no such record
[error] Timeout after 1 second (retries = 0, timeout = 1 second), timeFactor = 1 (TestActors.scala:10)
編輯:很奇怪的是,在錯誤消息中引用該行是TestActors.scala:10
- 這是基本的測試類的類定義。
如果我能讓系統理解1秒太快,我會非常高興。
我沒有想過要試試規格timeFactor,因爲超時來自Akka,而不是Matcher。但是,它的工作。我不確定爲什麼。 – Synesso