6

Myは、 を使用してメソッド (例: ) をビュー テンプレートにApplicationController公開します。次に、ビュー ヘルパー ( ) の別のメソッド ( など) でこのメソッドを使用します。sort_directionhelper_method :sort_directionsort_linkapplication_helper.rb

sort_linkメソッドを RSpec (in application_helper_spec.rb)でテストするときsort_directionは、テストがコントローラから完全に独立して実行されるように見えるため (したがって、メソッドをビュー テンプレートに公開することによって)、スタブする必要があります。

残念ながらsort_direction、コントローラーのそのメソッドをスタブする方法を見つけることができませんでした。私はいつも「未定義のメソッド」を取得します。

これが私がこれまでに試したことです(内部application_helper_spec.rb):

helper.stub(:sort_direction)
controller.stub(:sort_direction)
view.stub(:sort_direction)
self.stub(:sort_direction)

そのメソッドをスタブする方法はありますか?

ここで私が得るエラー:

NoMethodError:
       undefined method `sort_direction' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0xb641434c>
4

1 に答える 1

6

David Chelimsky はここでその問題を解決しました: http://groups.google.com/group/rspec/browse_thread/thread/cc44ca12c6816053

ヘルパー オブジェクトのすべてのメソッドを仕様で呼び出すだけです。

it "should work" do
   helper.stub(:sort_direction)
   helper.sort_link(...).should == ...
end
于 2011-03-22T03:22:21.730 に答える