2013-02-28 69 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註釋只能在單元測試中使用。

我的測試也在測試/集成 目錄的默認包中。

將您的測試移動到測試/單元/目錄。