Я использую playframework 2.2.6 scala.MockServer in org.specs2 тесты
Я хочу написать интеграционные тесты для своего приложения. Но мое приложение запрашивает некоторые услуги по http, и я хочу издеваться над ним с помощью mockServer. Но я не знаю, когда начинать и останавливать mockServer вызывают тесты используют фьючерсы
@RunWith(classOf[JUnitRunner])
class AppTest extends Specification with Around {
def around[T](t: => T)(implicit e: AsResult[T]): Result = {
val port = 9001
val server = new MockServer()
server.start(port, null)
val mockServerClient = new MockServerClient("127.0.0.1", port)
// mockServerClient rules
val result = AsResult.effectively(t)
server.stop()
result
}
"Some test" should {
"some case" in new WithApplication {
val request: Future[SimpleResult] = route(...).get
status(request) must equalTo(OK)
contentAsString(request) must contain(...)
}
"some other case" in new WithApplication {
//
}
}
}
С помощью этого кода я имею java.net.ConnectException: Соединение отклонено: /127.0.0.1:9001. И я не могу сделать это без server.stop, потому что сервер должен запускаться в разных тестах.
Вы можете попробовать с Вместо символа «AroundEach»? Это признак, который нужно использовать, когда вы хотите выполнить поведение в каждом примере. Затем, если вы хотите проверить фьючерсы, вы обычно можете использовать 'содержать (...). Await' при условии, что у вас есть неявное' ExecutionEnv' в области видимости: 'class AppTest (implicit ee: ExecutionEnv) расширяет спецификацию с помощью AroundEach'. Я превращу это в ответ, если он работает нормально для вас. – Eric