Grails Grail Junit控制器测试:request.withformat
我的任务是为这部分控制器代码编写GrailsJUnit集成,我以前从未见过类似的东西。这是一个创建和填充常见问题列表的项目;faq由类别、问题和答案字段组成。我想测试的方法部分如下:Grails Grail Junit控制器测试:request.withformat,grails,junit,Grails,Junit,我的任务是为这部分控制器代码编写GrailsJUnit集成,我以前从未见过类似的东西。这是一个创建和填充常见问题列表的项目;faq由类别、问题和答案字段组成。我想测试的方法部分如下: static allowedMethods = [index: 'GET', show: 'GET', create: 'GET', edit: 'GET', save: 'POST', update: 'PUT', faq:'GET', delete:'DELETE'] ... more stuff
static allowedMethods = [index: 'GET', show: 'GET', create: 'GET', edit: 'GET', save: 'POST', update: 'PUT', faq:'GET', delete:'DELETE']
... more stuff
@Transactional
def save(Faq faqInstance) {
... other stuff....
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: [message(code: 'faq.label', default: 'FAQ'), faqInstance.id])
redirect faqInstance
}
'*' { respond faqInstance, [status: CREATED] }
}
}
我仍在学习这些东西,所以这实际上可能比我的知识更容易我已经开始模拟一个Junit测试,它输入一个非常通用的faq,但是我不确定它应该返回什么或者如何继续
void "test save with request of form"(){
def cont = new FaqController()
cont.request.method = 'POST'
cont.params.category = 'General'
cont.params.question = "This is a question"
cont.params.answer = "This is an answer"
cont.save()
//what to return?
}
谢谢你的帮助,如果我忽略了一些显而易见的事情,请原谅我的无知
-ryan您必须检查controller.response,类似以下内容:
void testControllerRespondsWithJson () {
def controller = new FooController()
controller.request.method = 'POST'
controller.params.category = 'General'
controller.params.question = "This is a question"
controller.params.answer = "This is an answer"
controller.response.format = 'json'
controller.save ()
def json = controller.response.json
assert controller.response.status == HttpServletResponse.SC_CREATED
assert json.category == controller.params.category
// ...
}
controller.response.text是标准结果,一个字符串。对于json结果,更容易将其解析为json对象并进行检查。有关测试的详细信息,请参阅,如果不使用2.4,请使用grails版本替换url中的最新版本。它还提到了withFormat。我已经通读了这一部分,但它没有满足我的需要。我需要找到一个Junit风格的集成测试示例,它解决了withFormat。