2011-11-25 72 views
0

在你的控制下:Grails的2.0:POST和flash.message

static allowedMethods = [save: "POST", update: "POST", delete: "POST"] 

会造成例如设置为空flash地图save()行动。即下面的测试将会失败,因为闪光灯是[:]动作返回后和消息null

控制器:

static allowedMethods = [save: "POST", update: "POST", delete: "POST"] 
[...] 
def save = { 
    flash.message = "Saved" 
} 

测试:

void testSave() { 
    controller.save() 
    assert null != flash.message 
} 

没有任何理由为或者是Grails 2.0中的错误?

+0

现在我检查控制器的操作方法编程方式如下所述: http://grails.org/doc/2.0.x/ref/Controllers/allowedMethods .html 但是这不可能是解决方案吗? – Jonas

回答

2

flash是空的原因是您已将save()定义为仅使用POST方法。这就是Grails所做的 - 它不允许你使用GET访问save()。您完整的测试应该是这样的:

void testSaveWithGet() { 
    controller.save() 
    assert response.status == HttpServletResponse.SC_METHOD_NOT_ALLOWED 
} 

void testSaveWithPost() { 
    request.method = "POST" 
    controller.save() 
    assert flash.message == "Saved" 
}