我已将Grails项目从2.5升级到3.3.9,在现有版本中,有一个用于控制器的集成测试用例,其中断言了控制器的渲染模板行为
ex:
class UserController {
def list = {
render(template: 'list', model: [userInstanceList:User.list(params)])
}
}
使用grails 2.x的集成测试用例
class UserControllerSpec extends IntegrationSpec{
UserController controller
Map renderedMap
public void setup() {
controller = new UserController()
UserController.metaClass.render = { Map map ->
renderedMap = map
}
}
public void cleanup() {
}
void "test user list"(){
when:
controller.list()
then:
renderedMap.template.equals('list')
renderedMap.model.userInstanceList.size() > 0
}
}
使用时可以看到绑定metaClass.render将帮助我们弄清楚模板的断言
但是随着Grails 3的变化,很多东西都发生了变化,所以现在我更新了测试用例,例如
@Integration(applicationClass = Application.class)
@Rollback
class UserControllerSpec extends Specification{
@Autowired
UserController controller
Map renderedMap
//Mock web request code or other logic
public void setup() {
UserController.metaClass.render = { Map map ->
renderedMap = map
}
}
public void cleanup() {
}
void "test user list"(){
when:
controller.list()
then:
renderedMap.template.equals('list')
renderedMap.model.userInstanceList.size() > 0
}
}
但是在这里,我在renderedMap中得到了空值。
这里有什么解决方法吗?还可以通过测试访问Flash消息吗?
谢谢