Grails2.0.0:HTTP状态302

Grails2.0.0:HTTP状态302,grails,post,controller,get,httpresponse,Grails,Post,Controller,Get,Httpresponse,我有一个控制器,只允许对某些操作进行POST: static allowedMethods = [save: "POST", update: "POST", delete: "POST"] 然后有一个测试: void testUpdateWithGet() { controller.update() assert response.status == HttpServletResponse.SC_METHOD_NOT_ALLOWED } 这在2.0.0.RC1中运行良好,但

我有一个控制器,只允许对某些操作进行POST:

static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
然后有一个测试:

void testUpdateWithGet() {
    controller.update()
    assert response.status == HttpServletResponse.SC_METHOD_NOT_ALLOWED
} 
这在2.0.0.RC1中运行良好,但升级到Grails 2.0.0最终版本后,响应中返回的状态为
302
。为什么呢

问候


Jonas

我可以确认您的测试用例。这是因为由于2.0.0.RC3 Grails也有影响2.0.0 final的未解决的错误:-允许的方法在单元测试中不受尊重。您可以降级到2.0.0.RC1或等待修复此错误。它只影响单元测试,但在应用程序中运行良好。

我可以确认您的测试用例。这是因为由于2.0.0.RC3 Grails也有影响2.0.0 final的未解决的错误:-允许的方法在单元测试中不受尊重。您可以降级到2.0.0.RC1或等待修复此错误。它只影响单元测试,但在应用程序中运行良好。

如果显式设置方法,我将得到相同的
request.method=“get”
。一些类似的测试甚至返回
200
,这意味着调用正常。值得一提的是,
save
操作返回200,所有控制器的
update
delete
302。如果我不是通过单元测试而是通过curl从命令行测试这个问题,我无法重现您的302,我猜直接调用该方法的处理方式有问题。我建议删除allowedMethods条件并在控制器中打印request.method,然后运行测试。只是为了让您可以看到默认值是什么。@JanWikholm-默认方法始终是GET。如果我显式地设置了该方法,我会得到相同的
request.method=“GET”
。一些类似的测试甚至返回
200
,这意味着调用正常。值得一提的是,
save
操作返回200,所有控制器的
update
delete
302。如果我不是通过单元测试而是通过curl从命令行测试这个问题,我无法重现您的302,我猜直接调用该方法的处理方式有问题。我建议删除allowedMethods条件并在控制器中打印request.method,然后运行测试。只是为了让你能看到默认值是什么。@JanWikholm-default方法是everys-GET。谢谢,出于某种原因,我希望如此。不久前,我升级到RC3,看到了这个问题,再次降级到RC1。但是现在最终版本已经发布了,我不想再降级了。因此,我很乐意等待bug被解决。我用一个大的评论调整了我的单元测试…谢谢,出于某种原因,我希望如此。不久前,我升级到RC3,看到了这个问题,再次降级到RC1。但是现在最终版本已经发布了,我不想再降级了。因此,我很乐意等待bug被解决。我用一个大评论调整了我的单元测试。。。