Grails:UrlMapping测试失败:“与任何映射都不匹配”

时间:2013-02-28 14:10:03

标签: grails

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

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

所以层次结构是这样的:

  • MyMainApp
    • MyFirstPlugin
    • MySecondPlugin
    • ...

我想为我的插件编写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

import be.arexo.ehr.employee.Employee import 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'与任何映射都不匹配

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

1 个答案:

答案 0 :(得分:0)

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

  

@TestFor(FooUrlMappings)

请注意,TestFor注释只能用于单元测试。

  

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

将测试移至test / unit /目录。