在playframework中测试POST请求
我的控制器方法是这样的在playframework中测试POST请求,playframework,Playframework,我的控制器方法是这样的 public static void addItem(byte[] xmlFile) { ... //process file } 和我的应用程序测试文件 @Test public void addItem() { Request request = newRequest(); request.url = "/item"; request.encoding = APPLICATION_X_WWW_FORM_URLENCODED; request.b
public static void addItem(byte[] xmlFile) {
... //process file
}
和我的应用程序测试文件
@Test
public void addItem() {
Request request = newRequest();
request.url = "/item";
request.encoding = APPLICATION_X_WWW_FORM_URLENCODED;
request.body = new ByteArrayInputStream(xmlFileBytes)
Response response = POST(request, "/item")
.....
}
当我运行此命令时,会出现异常。。根本原因
不支持的编码:application/x-www-form-urlencoded
如何解决这个问题…我处理这个问题的通常方法是在表单上使用“多部分/表单数据”,并向控制器提供一个文件参数。据我所知,这也是记录在案的方式…我处理这一问题的通常方式是在表单上使用“多部分/表单数据”,并向控制器提供一个文件参数。这也是记录在案的方式,据我所知…我想这是不知道API的又一个例子…) FunctionalTest提供了一种POST方法,在该方法中,可以使用字符串键提交文件映射
POST(java.lang.Object url, Map<String,String> parameters,Map<String,File> files)
Sends a POST request to the application under tests as a multipart form. Designed for file upload testing.
POST(java.lang.Object url、映射参数、映射文件)
将POST请求作为多部分表单发送到测试中的应用程序。专为文件上传测试而设计。
我的解决方案
Request request = newRequest();
request.url = "/item";
Map<String, String> paramMap = Maps.newHashMap();
Map<String, File> fileMap = new HashMap<String, File>();
fileMap.put("xmlFile", new File("test/item.xml);
Response response = POST("/item", paramMap, fileMap);
assertIsOk(response)
Request-Request=newRequest();
request.url=“/item”;
Map paramMap=Maps.newHashMap();
Map fileMap=newhashmap();
put(“xmlFile”),新文件(“test/item.xml”);
Response-Response=POST(“/item”、paramMap、fileMap);
SOK(响应)
我想这是不了解API的又一个例子……)
FunctionalTest提供了一种POST方法,在该方法中,可以使用字符串键提交文件映射
POST(java.lang.Object url, Map<String,String> parameters,Map<String,File> files)
Sends a POST request to the application under tests as a multipart form. Designed for file upload testing.
POST(java.lang.Object url、映射参数、映射文件)
以多部分形式向测试中的应用程序发送POST请求。专为文件上载测试而设计。
我的解决方案
Request request = newRequest();
request.url = "/item";
Map<String, String> paramMap = Maps.newHashMap();
Map<String, File> fileMap = new HashMap<String, File>();
fileMap.put("xmlFile", new File("test/item.xml);
Response response = POST("/item", paramMap, fileMap);
assertIsOk(response)
Request-Request=newRequest();
request.url=“/item”;
Map paramMap=Maps.newHashMap();
Map fileMap=newhashmap();
put(“xmlFile”),新文件(“test/item.xml”);
Response-Response=POST(“/item”、paramMap、fileMap);
SOK(响应)
可能是。但是,我在你的问题中没有看到“GAE:)对此很抱歉,但我想让我的应用程序变得通用。。。即使使用多部分请求类型,我也会遇到同样的错误。这是在测试中发生的还是在浏览器中发生的?完整堆栈跟踪在这里可能很方便,可以查看是谁抛出了错误:)在浏览器中工作正常。。我试图写测试,但不知怎么的,我无法发布一个文件。。。如果它对您有效,您可以只键入用于测试POST请求的代码,并将文件作为控制器方法的参数。但是,我没有在你的问题中看到“GAE:)很抱歉,但我想让我的应用程序通用。。。即使使用多部分请求类型,我也会遇到同样的错误。这是在测试中发生的还是在浏览器中发生的?完整堆栈跟踪在这里可能很方便,可以查看是谁抛出了错误:)在浏览器中工作正常。。我试图写测试,但不知怎么的,我无法发布一个文件。。。如果它对您有效,您能否键入用于测试POST请求的代码,并将文件作为控制器方法的参数找到答案,但无法提交,因为我没有足够的声誉…:)FunctionTest提供了一种POST方法,在该方法中,用户可以使用字符串键提交文件映射。。。POST(java.lang.Object url、映射参数、映射文件)以多部分形式向测试中的应用程序发送POST请求。我的解决方案。。。Request=newRequest();request.url=“/item”;Map paramMap=Maps.newHashMap();Map fileMap=newhashmap();fileMap.put(“xmlFile”,new File(“test/item.xml);Response-Response=POST(“/item”,paramMap,fileMap);assertIsOk(Response)找到了答案,但无法提交,因为我没有足够的信誉…:)FunctionTest提供了一种POST方法,可以在其中提交带有字符串键的文件映射…POST(java.lang.Object url、映射参数、映射文件)以多部分形式向测试中的应用程序发送POST请求。我的解决方案…request request=newRequest();request.url=“/item”;Map paramMap=Maps.newHashMap();Map fileMap=new HashMap();fileMap.put(“xmlFile”,新文件(“test/item.xml”);Response-Response=POST(“/item”、paramMap、fileMap);断言(Response)