Я столкнулся с проблемой в Play 2.3.7 при тестировании действия, которое возвращает фрагментированный ответ с помощью перечислителя:
def text = Action {
Ok.chunked(Enumerator("abc"))
}
Используя curl http://localhost:9000/text
, я получаю ожидаемый результат: abc
, но следующий тест:
class ApplicationSpec extends Specification {
"Application" should {
"stream text" in new WithApplication{
val request = route(FakeRequest(GET, "/text")).get
contentAsString(request) mustEqual "abc"
}
}
}
терпит неудачу с ошибкой сравнения:
[info] Application should
[info] x stream text
[error] '3
[error] abc
[error] 0
[error]
[error] ' is not equal to 'abc' (ApplicationSpec.scala:31)
Откуда берутся эти лишние символы? Я подозреваю, что это может быть проблема с FakeRequest и Enumerators? В более сложном случае с конкатенированными перечислителями в действии будут смешаны символы между содержимым, созданным перечислителями.