0

在您的控制器中有以下内容:

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

例如,将导致该save()操作设置一个空flash地图。即以下测试将失败,因为 flash 是[:]在操作返回之后并且消息是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 中的错误?

4

1 回答 1

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"
}
于 2011-11-25T08:32:31.137 回答