在play框架中测试POST请求

时间:2011-07-10 16:22:58

标签: playframework

我的控制器方法是这样的

public static void addItem(byte[] xmlFile) {
   ... //process file
}

和我的ApplicationTest文件

@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

如何解决这个问题......

2 个答案:

答案 0 :(得分:1)

我想这是另一个不了解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.

我的解决方案......

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)

答案 1 :(得分:0)

我处理这个的常用方法是在窗体上使用“multipart / form-data”,在控制器上使用File参数。据我所知,这也是记录在案的方式......