2016-10-07 5 views
0

Grails newbはとても素朴ですが、私はいくつかのGroovyを知っていて、Javaのバックグラウンドを持っています。失敗しているテストがあるのGrails 2.3.9/Javaの1.8.0_101 :Grailsテストでの表示が失敗する

@TestFor(PillsController) 
@Mock(Pills) 
class PillsControllerTests { 
... 
void testUpdate() { 
    controller.update() 

    assert flash.message != null 
    assert response.redirectedUrl == '/somethingPills/list' 

    response.reset() 

    populateValidParams(params) 
    def somethingPills = new SomethingPills(params) 

    assert somethingPills.save() != null 

    params.id = somethingPills.id 

    controller.update() 

    assert view == "/somethingPills/edit" //<--- FAILS HERE. VIEW IS NULL. 
    assert model.somethingPillsInstance != null 

    somethingPills.clearErrors() 

    populateValidParams(params) 
    controller.update() 

    assert response.redirectedUrl == "/somethingPills/show/$somethingPills.id" 
    assert flash.message != null 

    response.reset() 
    somethingPills.clearErrors() 

    populateValidParams(params) 
    params.id = somethingPills.id 
    params.version = -1 
    controller.update() 

    assert view == "/somethingPills/edit" 
    assert model.somethingPillsInstance != null 
    assert model.somethingPillsInstance.errors.getFieldError('version') 
    assert flash.message != null 
} 
} 

は、私が想定し、「これは、私は、Java 6

コンテキストからのJava 8に更新していた古代のテストアプリですビュー "は、モデル化された/表示/コントローラのコード化されたバリアントへの参照です。

トップのアップデートがわかりました。何も保存されていない場合は何を更新しますか?私は移入を試み、SomethingPillsの宣言を更新しました。その結果、ビューはまだnullであった。どのような見方が予想されますか?

私が気づいたもう一つのこと。更新メソッドをクリックすると、2つのパラメータがあることがわかります。私はGroovyがデフォルトでパラメータを渡すことができないと仮定しています。それについてのエラーが表示されます。私はこれがうまくいくかどうかわかりませんが、ID &のバージョンをSomethingPillsから引き出して渡すと、nullの代わりに/ somethingPills/show/1 "を取得しますが、まだ/ somethingPills/editではありません。

[EDIT]私はこの発見しました:。あなたのPillsController.groovyファイルにhttp://docs.grails.org/2.3.9/guide/scaffolding.html

答えて

0

移動して、update()メソッドを見つける

あなたは

render view:'/somethingPills/edit', .... 
のような文を持っているかどうかを確認

ユニットテストでは、ビューが参照されます。コントローラがレンダリングするgspファイルのパス。

ユニットテストがまだ失敗した場合に投稿する必要があるupdate()メソッドにいくつかのロジックがあることは間違いありません。ユニットテストを作成すると、ある条件が一致するかのように見えます。そうでない場合は、gspテンプレートがレンダリングされます。

+0

Duuuhh ... ;-) Um、OK。私は問題を見る。何らかの理由でこの言語では、いくつかのパラメータが期待される場所にパラメータを渡さなくてもかまいません。この場合、いずれかがnullの場合は、nullが返されます。それは慣れていくのが大変です。 – user447607

+0

Groovyの真実(http://groovy-lang.org/semantics.html#Groovy-Truth)を調べるとよいでしょう。私はそれがあなたの将来のジレンマに答えることを願っています。 – elixir

関連する問題