На моем маршруте спрей я передаю актеру процесс обработки запроса. RequestContext
отправляется в сообщении этому игроку.Проверка маршрута распыления с помощью Akka TestProbe
path("mypath") {
parameters("thing".as[String]) { thing => ctx =>
myActor ! ProcessThingAndResondToContext(thing, ctx)
}
}
В моем тесте, я заменить TestProbe
для актера, так как обработка актера дорого.
class MySpec extends Specification with Specs2RouteTest with ScalaCheck with MyService {
val testProbe = TestProbe()
override val myActor = testProbe.ref
def is = s2"""
it should $doTheRightThing
"""
def doTheRightThing = {
Get(s"/mypath?thing=fruit") ~> route ~> check {
testProbe.expectMsgClass(classOf[ProcessThingAndResondToContext])
status mustEqual StatusCodes.Success
}
}
Эта спецификация терпит неудачу, потому что нет status
. TestProbe ничего не делает, поэтому ctx
никогда не отвечал.
Request was neither completed nor rejected within 1 second
Линия status mustEqual StatusCodes.Success
не имеет решающего значения для моего теста, но я не могу удалить его, потому что тогда спецификации не компилируется - метод больше не typechecks как MatchResult
.
Как я могу проверить маршрут, делегированный актеру?