1

私はこの部分をテストしています:

<% if user_signed_in? %>
          <%= menu_item "Logout", destroy_user_session_path %>
<% else %>
          <%= menu_item "Login",new_user_session_path %>
<% end %>

これは私のテストです:

require 'spec_helper'

describe "layouts/_header.html.erb" do

 before do
  view.stub(:user_signed_in?).and_return(true)
 end

 it "should have the right links on the header" do

 render
 rendered.should have_link('Login', new_user_session_path)
 rendered.should have_link('Logout', destroy_user_session_path)
 end
end

この方法ifでは、真のブランチである 1 つのブランチのみをテストします。

ifすべてのブランチをテストするにはどうすればよいですか?

4

1 に答える 1

1

コンテキスト ブロックを使用して、スタブにスコープを与えます。

require 'spec_helper'

describe "layouts/_header.html.erb" do

 context "logged" do
   before do
    view.stub(:user_signed_in?).and_return(true)
   end

   it "should have the right links on the header" do
     render
     rendered.should have_link('Login', new_user_session_path)
   end
  end

 context "not logged" do
   before do
    view.stub(:user_signed_in?).and_return(false)
   end
   it "should have logout button" do
     render
     rendered.should have_link('Logout', destroy_user_session_path)
   end
 end
end
于 2013-10-24T14:18:45.827 に答える