1

私はいくつかの Rails 統合テストを行おうとしています。

フォーム ヘルパーに関する Rails ガイドからほぼ出てきたケースがあります。

私のHTMLには以下が含まれています:

    <input name="to_org[][str2int]" value="1" type="checkbox">
    <input name="to_org[][str2int]" value="2" type="checkbox">
    <input name="to_org[][str2int]" value="3" type="checkbox">

アプリケーションは Rails 3.2.2 で正常に動作します。

次に、統合テストを書きたいと思います。JavaScript と同じ方法でデータを投稿する必要があります。「to_org[]」の値 1 と 2 が選択されていることを示したいと思います。form_url が適切に設定された値であると仮定します。

    post( form_url, { "to_org[][str2int]" => ???WHAT_GOES_HERE??? } )

投稿の後、私はパラメータが保持されることを期待しています:

    "to_org" => [ {"str2int" => "1"}, {"str2int" => "2"} ]

私はさまざまなことを試し、ガイドを調べ、グーグルで検索しました。

複数のチェックボックスをチェックした結果を投稿しようとした人はいませんか? 答えは明白ではないと思います。

これを機能させるには、統合テストで post() のパラメーターをどのように設定しますか?

PS: ご想像のとおり、"str2int" を認識するフィルターがあり、アプリの適切なチェックとエラー回復を使用して変換を行います。最終的に、私のアプリは :to_org = [ 1, 2 ] を認識します。

4

1 に答える 1

1

基本的に、私は Rails コードを掘り下げました (API ドキュメントを作成するのを見るのは素晴らしいことです)。

正解は次のとおりです。

    post( form_url, { "to_org" => [ { "str2int" => "1" }, { "str2int" => "2" } ] } )

最も役に立ったのは、次のように to_param() 関数を発見したことです。

    { "to_org" => [ { "str2int" => "1" }, { "str2int" => "2" } ] }.to_param()

これにより、post() を介して正しく渡される値を取得するには、名前として使用したものを変更する必要があるという事実を推測することができました。

Railsの神々:これを行うためのより良い方法はありますか? もっと言うべきですか?

于 2012-06-13T19:40:42.637 に答える