Grails:UrlMapping测试失败:";不匹配任何映射”;

Grails:UrlMapping测试失败:";不匹配任何映射”;,grails,Grails,我正在研究Grails框架并开发一个应用程序 目前我有一个主应用程序,它有几个插件 所以层次结构是这样的: MyMainApp 我的第一个插件 迈斯康德普卢金 我想为我的插件编写UrlMappings测试。我写了文档,可能遗漏了什么,但我无法通过那些f**测试。我总是犯错误 java.lang.IllegalArgumentException:url“/bar”与任何映射都不匹配 这是我的FooUrlMappings类 class FooUrlMappings { static

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

目前我有一个主应用程序,它有几个插件

所以层次结构是这样的:

  • MyMainApp
    • 我的第一个插件
    • 迈斯康德普卢金
我想为我的插件编写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”与任何映射都不匹配


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

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

@TestFor(FooUrlMappings)

注意,TestFor注释只能在单元测试中使用

我的测试也在测试/集成的默认包中 目录


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

您可以添加您要调用的url吗?我只想通过这个测试:assertForwardUrlMapping(/bar/),controller:“foo”,action:“show”)我能想到的唯一一件事是,也许您应该替换已经尝试过的第二个/like“/bar\/”,它不起作用。我在urlMapping和测试中都去掉了第二个斜杠。如下所示:“/bar”(控制器:“foo”,操作:“show”)-assertForwardUrlMapping(“/bar”,控制器:“foo”,操作:“show”)