Ruby on Rails の世界は初めてです。
テスト ケースからコントローラーのインスタンス変数にアクセスする方法が少なくとも 1 つあることに気付きました。
実際、次のテスト方法を想定してください。
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:products)
end
products
関連するコントローラー内に含まれるインスタンス変数です。確かに、テストケースにはこのコントローラーへの参照があります。したがって、assigns()
メソッドはそれを使用してコントローラーのインスタンス変数のハッシュを検査し、以前にこのコントローラーへのアクションを呼び出した他のファイルから正確なオブジェクトにアクセスできるようにします。
だから私は2つの質問を疑問に思います:
assigns()
メソッドを使用する代わりに、コントローラーへの「バインディング」を作成しないのはなぜですか?
それが可能なバージョンを想像します:
test "should get index" do
get :index
assert_response :success
assert_not_nil @products
end
短くてきれいになりませんか?
バインディングは、次のリンクに示すように、ERB ファイルがコントローラーのインスタンス変数にアクセスできるようにするメカニズムです。
http://rrn.dk/rubys-erb-templating-system
このメカニズムがテストケースに適用できないのは何ですか? assigns()
メソッドは必須ですか?