Grails Grail Junit控制器测试:request.withformat

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

我的任务是为这部分控制器代码编写GrailsJUnit集成,我以前从未见过类似的东西。这是一个创建和填充常见问题列表的项目;faq由类别、问题和答案字段组成。我想测试的方法部分如下:

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。