Java 测试AJAX文件上传

Java 测试AJAX文件上传,java,playframework-2.0,Java,Playframework 2.0,我想在我的应用程序中测试文件上传。上传本身的处理如上的直接文件上传部分所述 我正在使用最新的Play20版本,并按照所述进行构建 我当前的代码如下所示,但显然缺少向请求中添加测试文件的部分: Test.java FakeRequest请求=FakeRequest(POST,“/measurement/123/file”); //如何将测试文件附加到此请求? 结果=routeAndCall(请求); 阿塞尔托克(结果); Controller.java publicstaticuploadfil

我想在我的应用程序中测试文件上传。上传本身的处理如上的直接文件上传部分所述

我正在使用最新的Play20版本,并按照所述进行构建

我当前的代码如下所示,但显然缺少向请求中添加测试文件的部分:

Test.java

FakeRequest请求=FakeRequest(POST,“/measurement/123/file”);
//如何将测试文件附加到此请求?
结果=routeAndCall(请求);
阿塞尔托克(结果);
Controller.java

publicstaticuploadfile(){
RequestBody body=request().body();
if(body!=null){
RawBuffer RawBuffer=body.asRaw();
if(rawBuffer!=null){
File uploadedFile=rawBuffer.asFile();
// ...
}
}
返回ok();
}

根据,FakerRequest调用的签名为:


您应该能够检查将文件上载到应用程序的POST请求的主体,并将该主体作为参数复制到测试代码中。另一种方法是根据on multipart POST构建它。

我的Play 2 Java文件上传测试解决方案是创建UploadFakereRequest扩展FakereRequest。在类中,我有自己的withRawBody方法,类似于:

 RawBuffer raw = new RawBuffer(1000, data.getBytes()); // No clue what is the correct value here...
 AnyContentAsRaw content = new AnyContentAsRaw(raw);
 fake = new play.api.test.FakeRequest(POST, fake.path(), new play.api.test.FakeHeaders(Scala.asScala(map)), content, "127.0.0.1");

你能举个例子吗?
 RawBuffer raw = new RawBuffer(1000, data.getBytes()); // No clue what is the correct value here...
 AnyContentAsRaw content = new AnyContentAsRaw(raw);
 fake = new play.api.test.FakeRequest(POST, fake.path(), new play.api.test.FakeHeaders(Scala.asScala(map)), content, "127.0.0.1");