Grails 2.0:POSTとflash.message

あなたのコントローラには次のようなものがあります:

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

save アクションを空の flash マップに設定します。私。アクションが返ってメッセージが null になった後にFlashが [:] であるため、次のテストは失敗します。

コントローラ:

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
今のところ、ここで説明するように、コントローラのアクションのメソッドをプログラムでチェックしています: grails.org/doc/2.0.x/ref/Controllers/allowedMethods.html これは解決策ではありませんか?
追加された 著者 Jonas,

1 答え

flashが空である理由は、POSTメソッドのみを使用するsave()を定義しているためです。これは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"
}
2
追加された