1

application_helperにadmin_rightsというメソッドがありますか?ユーザーがサイトにコンテンツを追加できるかどうかを確認します。私はユーザーシステムを実装していないので、現時点ではtrueを返すだけです。しかし、私はそれをテストしようとしていますが、それをスタブする方法を見つけることができないようで、テストでfalseを返します。仕様は、admin_rightsの場合にのみ表示されるはずのリンクをチェックしますか?trueを返します。admin_rightsを変更して手動でテストする場合はどうなりますか?falseにすると、意図したとおりに機能します。だから私はどうやらそれを正しくスタブアウトしていません。

仕様は次のとおりです。

context "no admin rights" do
  before do 
    page.stub(:admin_rights?).and_return(false)
    visit fencers_path
  end
  it "should not have add fencer link" do
    expect(page).not_to have_link('+ Fekter', href: new_fencer_path)
  end
end

私はそれをスタブアウトする正しい方法またはそれをテストする別の方法を探しています。

4

1 に答える 1

1

あなたが投稿したテストケースは、検収試験です。サーバーインスタンスを起動し、フルスタックを通過します。この種のテストでは、スタブやモックに頼るべきではありません。彼らは、アプリケーション全体が機能することを確認し、アプリケーションをブラックボックスとして扱う必要があります。ほんの少しのコードを置き換えることは、非常に脆弱な受け入れテストのレシピです。また、Javascriptを実行するドライバーを使用してテストを実行する場合、サーバーはテストとは異なるプロセスで実行されるため、スタブを機能させる機会はありません。

のロジックを実装してadmin_rights?から、ロジックが実際に返す受け入れテストセットアップを調整する必要がありますfalse。たとえば、管理者権限を持たない通常のユーザーでサインインします。最終的には、受け入れテストを実際のシナリオに厳密に一致させる必要があります。

于 2013-01-05T13:59:09.367 に答える