所以我在我的一个控制器中有一个方法,它需要一个然后处理的CSV文件。这一切似乎工作正常,但我想添加一些测试只是为了验证它。但是,我不是百分百确定如何进行测试。
我写了一个快速的测试方法,应该可以工作(据我所知)但是我收到以下错误:
A java.lang.RuntimeException has been caught, java.io.FileNotFoundException: File is not a normal file.
我的代码如下:
控制器方法:
/* client-side scripts dictate the incoming
* file will be called "files".
*/
public static void upload(File files) {
//do some work
}
控制器测试方法:
/* this test class and the file "valid-data.csv"
* are in the same folder.
*/
@Test
public void upload() {
File csvFile = Fixtures.loadYaml("valid-data.csv", File.class);
Map<String, File> fileMap = new HashMap<String, File>();
fileMap.put("files", csvFile);
Response response = POST("/api/upload", new HashMap<String, String>(), fileMap);
assertIsOk(response);
}
我是以正确的方式来做这件事的吗?我正在使用Play Framework 1.2.5
答案 0 :(得分:0)
终于解决了这个问题。 原来这是一个简单的文件位置问题。正如我所提到的,测试类和csv文件位于同一个文件夹中,称为“test”。但是,在加载文件时,我仍然需要在'test'文件夹中指定它。
只需更改测试功能的第一行:
File csvFile = Fixtures.loadYaml("valid-data.csv", File.class);
为:
File csvFile = new File("test/valid-data.csv");
现在它运作良好。