【发布时间】:2011-11-12 14:38:45
【问题描述】:
考虑以下控制器:
package test
class FirstController
{
def index =
{
chain(controller:"second",
action: "index")
}
}
...具有以下关联的单元测试用例:
package test
import grails.test.*
class FirstControllerTests extends ControllerUnitTestCase
{
protected void setUp()
{
super.setUp()
}
protected void tearDown()
{
super.tearDown()
}
// Passes
void testChainArgs()
{
controller.index()
assertEquals('index', controller.chainArgs.action)
assertEquals('second', controller.chainArgs.controller)
}
// Fails
void testOverrideInstanceChain()
{
def passTest = false
controller.metaClass.chain =
{
Map args ->
passTest = true
}
assertTrue(passTest)
}
// Fails
void testOverrideClassChain()
{
def passTest = false
FirstController.metaClass.chain =
{
Map args ->
passTest = true
}
assertTrue(passTest)
}
}
为什么最后两个测试失败了?
【问题讨论】:
标签: unit-testing grails controller metaclass