2013-02-28 106 views
1

我正在学习Grails框架并开发应用程序。Grails:UrlMapping测试失败:“与任何映射不匹配”

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

所以层次是这样的:

  • MyMainApp
    • MyFirstPlugin
    • MySecondPlugin
    • ...

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

java.lang.IllegalArgumentException异常:URL '/条' 没有匹配的映射

这里是我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") 
    } 
} 

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

所以我认为我在文档中说了什么。如果我尝试运行这个测试,我将获得:

java.lang.IllegalArgumentException异常:URL“/条”没有匹配的映射

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

+0

你可以添加你要的网址吗? – axierjhtjz 2013-02-28 14:42:23

+0

我只想通过这个测试: assertForwardUrlMapping(“/ bar /”,controller:“foo”,action:“show”) – Hito 2013-02-28 14:46:51

+0

我唯一能想到的是,也许你应该花第二个//bar \ /“ – axierjhtjz 2013-02-28 15:34:01

回答

0

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

@TestFor(FooUrlMappings)

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

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

将您的测试移动到测试/单元/目录。