在我的Grails应用程序控制器进行单元测试,在控制器中,我使用以下类似的事情:不能使用grailsApplication.getMetadata.get(”“),而在Grails中
class SampleController {
def action1 = {
def abc = grailsApplication.getMetadata().get("xyz")
render abc.toString()
}
}
当运行应用程序,它正确地从application.properties中读取属性“xyz”并且正常工作。但是,当我写一个单元测试用例上述控制器如下:
class SampleControllerTests extends ControllerUnitTestCase {
SampleController controller
protected void setUp() {
super.setUp()
controller = new SampleController()
mockController(SampleController)
mockLogging(SampleController)
}
void testAction1() {
controller.action1()
assertEquals "abc", controller.response.contentAsString
}
}
但是当我做“的Grails测试应用程序”,我期望它会拿起从application.properties属性“XYZ”和将按预期返回。但它错误为“没有这样的属性:grailsApplication”。
我明白了,我想我需要模拟grailsApplication
对象,并且我尝试了很多选项但是所有这些都不起作用。
我是新来的Grails。
你使用的是女巫版的grails吗? – 2013-03-19 13:04:32
版本:grails 1.3.7 – user2186466 2013-03-19 13:21:04
您可能需要考虑将abc的值注入到控制器中,以便将控制器从grailsApplication的显式依赖中释放。 – 2013-03-19 15:36:48