1

我正在研究 Grails 框架并开发应用程序。

目前我有一个包含多个插件的主应用程序。

所以层次结构是这样的:

  • 我的主应用程序
    • 我的第一个插件
    • 我的第二插件
    • ...

我想为我的插件编写 UrlMappings 测试。我写了文档,我可能遗漏了一些东西,但我无法通过那些 f* *测试。我总是抓住错误

java.lang.IllegalArgumentException: url '/bar' 不匹配任何映射

这是我的 FooUrlMappings 类

class FooUrlMappings {
    static mappings = {

        "/bar/"(controller: 'foo', action: 'show')
    }
}

请注意,我的 FooUrlMappings 类位于 /conf 目录中的默认包中。

现在我的控制器 FooController 的代码:

package be.arexo.ehr.employee.rest

导入 be.arexo.ehr.employee.Employee 导入 grails.converters.JSON

class FooController {

    // GET /bar/
    def show() {
        def result = Bar.list()

        render result as JSON
    }
}

所以现在,我的测试课:

import com.example.FooController
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
import grails.test.mixin.web.UrlMappingsUnitTestMixin

@TestFor(FooUrlMappings)
@Mock(FooController)
class FooUrlMappingsTests {

    void testBarShow(){
        assertForwardUrlMapping("/bar/", controller : "foo", action : "show")
    }
}

我的测试也在 test/integration 目录的默认包中。

所以我认为我做了文档中所说的。如果我尝试运行此测试,我将得到:

java.lang.IllegalArgumentException: url '/bar' 不匹配任何映射

我的错误在哪里?有人能帮助我吗 ?

4

1 回答 1

0

您应该将 URL 映射测试作为单元测试运行,而不是作为集成测试。这将解决您的问题。

@TestFor(FooUrlMappings)

请注意,TestFor 注解只能在单元测试中使用。

我的测试也在 test/integration 目录的默认包中。

将您的测试移动到 test/unit/ 目录。

于 2013-07-02T22:24:21.133 回答