2013-04-14 108 views
0

我不能爲了我的生活找出爲什麼這些測試失敗。如何獲得rspec測試通過?

當用戶輸入他們的電子郵件/密碼並點擊登錄按鈕時,他們被重定向到他們的個人資料頁面,他們的名字放在標題中並在頁面上顯示他們的名字。它還顯示了他們的個人資料和註銷鏈接的鏈接。當我瀏覽瀏覽器中的步驟時,一切都應該在哪裏,但是當rspec運行時,它仍然會失敗。

我覺得很奇怪的是,當我運行一個測試相同元素的user_page_spec測試時,這些測試都通過了。

我想它與控制器中的click_button部分或「redirect_to user」有關,但任何洞察都將非常感謝。

下面是測試 -

測試通過在authentication_pages_spec.rb user_pages_spec.rb-

describe "profile page" do 
    let(:user) { FactoryGirl.create(:user) } 
    before { visit user_path(user) } 

    it { should have_selector('h1', text: user.firstName) } 
    it { should have_selector('title', text: user.firstName) } 
end 

測試失敗 - 需要 'spec_helper'

describe "Authentication" do 
    describe "sign in" do 
    . 
    . 
    . 
    describe "with valid information" do 
     let(:user) { FactoryGirl.create(:user) } 
     before do 
      fill_in "Email",   with: user.email 
      fill_in "Password",  with: user.password 
      click_button "Log in" 
     end 

     it { should have_selector('title', text:user.firstName) } 
     it { should have_link('Profile', href: user_path(user)) } 
     it { should have_link('Sign out', href: signout_path) } 

     describe "followed by signout" do 
      before { click_link "Sign out" } 
      it { should have_link('Home') } 
     end 
    end 
    end 
end 

回答

0

是啊。總是最簡單的疏忽導致最大的麻煩。

這是發生了什麼事。

而不是使用以下各項

describe "page" do 
    it "should have something" do 
    page.should have_selector('') 
    end 
end 

Rspec的讓你定義一個對象 -

subject { page } 

它允許你第一碼塊簡化到以下各項

subject { page } 
describe "page" do 
    it { should have_selector('') } 
end 

這允許您運行多個引用頁面的測試,而無需額外的輸入。

我忽略了最上面的主題{page},所以我的塊都不知道要引用什麼。一旦加入,所有測試都沒有問題。

希望這可以幫助別人在未來。