2

初めてスタブを使用していて、ページが呼び出されたときにメソッドを実行するコントローラーがあります。そのメソッドが空を返す場合、ホームページにリダイレクトする必要があります。したがって、私のコントローラーは次のようになります

def jobs
  if scrap_cl().empty?
    redirect_to home_path
    flash[:error] = "Nothing found this month!"
  end
end

私のテストでは、そのメソッドが空を返したときにリダイレクトをテストしたいと思います。これまでのところ、私はこれを持っています

context "jobs redirects to homepage when nothing returned from crawlers" do
  before do
    PagesController.stub(:scrap_cl).and_return("")
    get :jobs
  end

  it { should respond_with(:success) }
  it { should render_template(:home) }
  it { should set_the_flash.to("Nothing found this month!")}      

end

rpsec を実行すると、テンプレートのレンダリングとフラッシュの 2 つのエラーが発生します。したがって、それは私を仕事のページに送っています。スタブとテストで何が間違っていますか?

4

1 に答える 1

4

そこにあるスタブはscrap_cl、呼び出されることのない というクラス メソッドをスタブ化します。インスタンスメソッドが必要です。RSpec のany_instance:

PagesController.any_instance.stub(:scrap_cl).and_return("")

これにより、PagesController のすべてのインスタンスがそのメソッドをスタブ化します。これは、ここで実際に必要なことです。

于 2013-01-04T23:41:04.613 に答える