我使用Spock测试控制器的动作如下:
控制器中的代码:
def milestoneChange() {
Milestones selectedMilestone = dataQueryService.getMilestone(params.id)
Tasks[] tasksList = dataQueryService.getTasksList(params.id)
List enumerateNameList = dataQueryService.getEnumerateNameList()
render(template: 'milestoneSummary', model: [selectedMilestone: selectedMilestone, tasksList: tasksList, enumerateNameList: enumerateNameList, selectedMilestoneID: params.id])
}
测试中的代码:
@TestFor(MilestonesMgtController)
class MilestonesMgtControllerSpec extends Specification {
void "change the milestone"() {
when:
views['/milestonesMgt/_milestoneSummary.gsp'] = "test"
controller.params.id = 'Late Stage Review'
controller.milestoneChange()
then:
controller.response.text == 'test'
}
}
因为_milestoneSummary.gsp的内容非常长,所以我使用了Grails文档和http://www.javacodegeeks.com/2013/09/grails-goodness-unit-testing-render-templates-from-controller.html中提到的方法,它使用了视图[' /milestonesMgt/_milestoneSummary.gsp']来嘲笑模板。但是,响应仍然是原始的长内容?有谁知道我的代码有什么问题?非常感谢!!!
当使用params / response / model时,我必须使用controller.xxx,但我看到文档中的示例代码直接使用了params / response / model,你知道为什么吗?我正在使用Grails 2.3.8
项目链接http://github.com/jackyying1130/MMS 测试位于MMS / test / integration / phdmilestonemanagementsystem / MilestonesMgtControllerSpec.gr oovy