(req-6ren">
gpt4 book ai didi

scala - 发现 "play.api.libs.iteratee.Iteratee[Array[Byte],play.api.mvc.Result]"需要 "play.api.mvc.Result"错误

转载 作者:行者123 更新时间:2023-12-04 23:58:23 28 4
gpt4 key购买 nike

使用 Play 2.1-RC1 我无法编写简单的测试。

这是操作代码:

def echoTestTagFromXml = Action(parse.xml) { request =>
(request.body \ "test" headOption).map(_.text).map { test =>
Ok(views.xml.testTag(test))
}.getOrElse {
BadRequest("Missing parameter [name]")
}
}

下面是测试代码:
"Test Tag Xml Echo" in {
running(FakeApplication()) {
val req = new FakeRequest(POST, controllers.routes.SimpleResultsController.echoTestTagFromXml().url, FakeHeaders(), Xml("<test>gg</test>"))
val result = controllers.SimpleResultsController.echoTestTagFromXml()(req)
status(result) must equalTo(OK)
}
}

测试给出错误:
[error]  found   : play.api.libs.iteratee.Iteratee[Array[Byte],play.api.mvc.Result]
[error] required: play.api.mvc.Result

从谷歌我知道问题出在 BodyParser 中。但我不知道(在 API 调查之后)如何使代码工作。

最佳答案

以下修改后的测试代码应该可以工作,但我认为在尝试将主体传递到 FakeRequest 时存在一个错误,有点遗留功能测试现在已弃用的“routeAndCall”函数。 body 永远是空的。

"Test Tag Xml Echo" in {
running(FakeApplication()) {
val req = FakeRequest(POST, controllers.routes.SimpleResultsController.echoTestTagFromXml().url, FakeHeaders(), Xml("<test>gg</test>"))
.withHeaders(CONTENT_TYPE -> "text/xml")
val result = await(controllers.SimpleResultsController.echoTestTagFromXml()(req).run)
contentAsString(result) must equalTo("gg")
status(result) must equalTo(OK)
}
}

我在将 Json 传递到正文时遇到了类似的问题,但我试图让它为您的正文解析器工作(注意差异)。另外,请设置内容类型标题。

但是,您可以改用“路由”功能:
"Test Tag Xml Echo Route" in {
running(FakeApplication()) {
val result = route(FakeRequest(POST, "/SimpleResultsController").withHeaders(CONTENT_TYPE -> "text/xml"), Xml("<test>gg</test>")).get
contentAsString(result) must equalTo("gg")
status(result) must equalTo(OK)
}
}

这似乎对我有用,您应该能够复制/粘贴此解决方案。

如果您不想将路线作为字符串重复,那么您可以像以前一样使用反向路线: controllers.routes.SimpleResultsController.echoTestTagFromXml().url

关于scala - 发现 "play.api.libs.iteratee.Iteratee[Array[Byte],play.api.mvc.Result]"需要 "play.api.mvc.Result"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13806851/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com