scala – 找到“play.api.libs.iteratee.Iteratee [Array [Byte]
发布时间:2020-12-16 18:03:55 所属栏目:安全 来源:网络整理
导读:使用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 [
使用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’功能.身体总是空的.
"Test Tag Xml Echo" in { running(FakeApplication()) { val req = FakeRequest(POST,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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |