1

テストケースでクエリ文字列を渡す必要がありcontroller.request.queryString、同じように渡しています。

私のテストは失敗しています。null valueクエリ文字列パラメーターを提供しています。

コントローラー - UserExController

Foll は、統合テストを行っているアクションです。これでは、クエリ文字列パラメーター 'uid' を読み取り、GORM メソッドを使用して userInstance を取得しています。

def getUser() {
    //reading the query string parameter 'uid'
    def userId = request.getParameter("uid")  
    User user = User.findByUsername(userId)
    render view:'edit', model:[userInstance:user]
}

これは、上記のアクションのテストです。この中で、クエリ文字列パラメーターを渡し、アクションを呼び出しています

class UserInstanceTests extends GroovyTestCase {

    @Test
    void testPerfSummaryApi() {
        def userExController=new UserExController()
        userExController.request.queryString='uid=rp123'
        userExController.getUser()
        def model = userExController.modelAndView.model.userInstance
        assertNotNull model
    }
}

私はgroovy.lang.MissingMethod.Exceptionフォールコールに参加しています:

User.findByUsername(userId) //userId is comming null
4

2 に答える 2

0

これでうまくいくはずです (Grails 2.0.4 でテスト済み):

 userExController.request.addParameter('uid', 'rp123')

ただし、dmahapatro の提案に目を向け、コントローラーをリファクタリングして のparams.uid代わりに使用することをお勧めしますrequest.getParameter("uid")。または、コマンド オブジェクトを導入することもできます。あなたが今行っている方法は、標準的な Grails の方法ではないようです。

于 2013-04-07T12:04:34.830 に答える