2013-05-31 11 views
0

當我硬編碼在new.html.erb只是我的測試通過了上述的form_tag如下:Rails的have_selector不工作的時候選擇是application.html.erb

<div class="alert alert-error">Invalid email/password combination</div> 

但在使用中產生div時application.html.erb中的flash.now消息產生new.html.erb,測試失敗。

--------------- application.html.erb ---------------------

<!DOCTYPE html> 
<html> 
<head> 
    <title><%= full_title(yield(:title)) %></title> 
    <%= render 'layouts/stylesheets' %> 
</head> 
<body> 
    <a name="top" /> 
    <div id="main_wrapper"> 
    <%= render 'layouts/leaderboard_advertisement' %> 
    <%= render 'layouts/header' %> 
    <div id="threecolwrap"> 
     <div id="twocolwrap"> 
     <%= render 'layouts/left_advertisement' %> 
     <section id="main_content_area"> 
      <% flash.each do | key, value | %> 
      <%= content_tag(:div, value, class: "alert alert-#{key}") %> 
      <% end %>   
      <%= yield %> 
     </section> 
     </div> <!-- end of twocolwrap --> 
     <%= render 'layouts/left_advertisement' %> 
    </div> <!-- end of threcolwrap --> 
    <%= render 'layouts/footer' %> 
    </div> <!-- end of main_wrapper --> 
</body> 
</html> 

--------------- new.html.erb ---------------------

<% provide(:title, "Sign In") %> 

<div> 
    <div class="pages_title1"> 
    <h2 class='title_text_with_logo'>Sign In</h2> 
    <%= image_tag "logo1_140_22.png", class: 'title_logo title_logo_position_right' %> 
    </div> 
    <div class="pages_text1 wide_column"> 
    <div> 
     <%= form_tag(sessions_path) do %> 
     <%= label :session, :email %> 
     <%= text_field :session, :email %> 

     <%= label :session, :password %> 
     <%= password_field :session, :password %> 

     <%= submit_tag "Sign in" %> 
    <% end %> 

     <p>New user? <%= link_to "Sign up now!", signup_path %></p> 
    </div> 
    <div class='full_logo_center'> 
     <%= image_tag "fulllogo1_200_48.png" %> 
    </div> 
    </div> 
</div> 

--------------- test.html.erb ---------------------

describe "signin" do 
    before { visit signin_path } 
    let(:page_title) { 'Sign In' } 

    describe "with invalid information" do 
    it { should have_selector('h2', text: 'Sign In')} 
    it { should have_selector('div.alert.alert-error', text: 'Invalid') } 
    end 
end 

- ------------- session_controller.rb ---------------------

def create 
    user = User.find_by_email(params[:session][:email].downcase) 
    if user && user.authenticate(params[:session][:password]) 
    sign_in user 
    redirect_back_or user 
    else 
    flash.now[:error] = "Invalid email/password combination" 
    render 'new' 
    end 
end 

回答

0

根據您的測試,您所做的只是在登錄「登錄」頁面。您並未嘗試登錄,因此沒有顯示錯誤消息。

找到這樣問題的最簡單方法是在測試開始時使用水豚法save_and_open_page。這樣,你可以看到水豚看到它的頁面。這使得測試中的錯誤非常明顯。在這種情況下,您會看到沒有錯誤消息。

+0

是的,在我的方面,骨頭的錯誤。感謝您的答覆。我真的很感激。 –