集成测试查找资源的麻烦

时间:2011-07-05 13:31:10

标签: grails

我正在使用Grails 1.3.6。我的服务中有这个代码......

            if (folder) {
                    path = "json/${folder}/${page}.json"
            } else {
                    path = "json/${page}.json"
            } // if
            def file = ApplicationHolder.application.parentContext.getResource(path).getFile();

通常从web-app / json目录中正确检索文件,但是当我运行集成测试(通过grails test-app)时,上面的代码在尝试检索资源时失败(“java.io.FileNotFoundException :类路径资源[json / index.json]无法解析为URL,因为它不存在“)。以下是我的集成测试。我如何告诉它在哪里找到资源?

谢谢, - 戴夫

class HomeControllerTests extends GroovyTestCase {
...

void testGetAllJSON() {
            def controller = new HomeController()

            // Call action without any parameters
            controller.index()

            def responseStr = controller.response.contentAsString

            assertTrue( isValidJSON(responseStr) )
    } 

1 个答案:

答案 0 :(得分:1)

这可能是因为测试与web-app的上下文路径不同。请尝试使用resource tag

if (folder) {
    path = "${resource(dir:'json',file:"${folder}/${page}.json")}"
} else {
    path = "${resource(dir:'json',file:"${page}.json")}"
}