我正在研究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
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'与任何映射都不匹配
我的错误在哪里?有人能帮帮我吗?
答案 0 :(得分:0)
您应该将URL映射测试作为单元测试运行,而不是作为集成测试运行。这将解决您的问题。
@TestFor(FooUrlMappings)
请注意,TestFor注释只能用于单元测试。
我的测试也在测试/集成的默认包中 。目录
将测试移至test / unit /目录。