4

RSpec (Rails 3.2.8 の 2.12) でビューをテストしています。CanCan を使用して、ページ上の特定の要素を条件付きで表示しています。これには、コントローラー メソッド「current_user」が必要です。私の仕様の一部では、 current_user をスタブ化できました。controller.stub(:current_user).and_return(etc) または view.stub.etc 。

これは私の仕様の一部で機能します。しかし、機能していない場所がいくつかあり、その理由がわかりません。

動作していない 2 つの仕様では、パーシャルを呼び出すビューをテストし、パーシャル内でメソッドとして「current_user」にアクセスします。エラーは

undefined local variable or method `current_user' 

したがって、私の質問は、メソッドを正しくスタブして、パーシャル内でアクセスできるようにする方法だと思います。

それはどのように行われるべきですか?

4

1 に答える 1

10

コントローラーをテストしているのではなく、ビューをテストしているため、コントローラースタブは機能しません。代わりにビュー スタブを使用してください。

view.stub(:current_user).and_return(etc)

これは、ビューだけでなくパーシャルでも機能するはずです。

参照:ヘルパー メソッドをスタブ化するビュー仕様を渡す

于 2012-12-29T20:44:35.760 に答える