2013-05-29 179 views
0

我被要求幫助Rails應用程序。我正在經歷一些失敗的rpsec測試並讓他們通過。我有一個我正在用頭撞牆的東西。我們使用的是Rails 3.2.13和Ruby 2.0注意:我完全是rspec上的nube。rspec測試結果水豚:: ElementNotFound

我有一個表格,身份證爲獸醫。測試正在尋找這個,而不是找到它。我收到錯誤:

Capybara::ElementNotFound: 
    Unable to find css "form#vet-as-faculty 

我也在測試中的其他表單元素上也出現類似的錯誤,但測試失敗或此時此刻。

我知道這個「通常」意味着表單上的標記不正確,或者測試中的某些內容拼寫錯誤(我發現了其中的一些)。但是,我無法得到這一個。我已經谷歌搜索這個錯誤,並發現了一些東西,但似乎沒有幫助我在這一個。我希望你們的大師們能看到一些簡單的東西。

窗體/視圖(部分):

<%= form_for @profile, :url => { :action => :vet_as_faculty }, :html => { :id => "vet-as-faculty" } do |f| %> 
    <fieldset class="row1"><legend>Vet Me As Faculty</legend> 
    <div class="form-pair" id="faculty-url"> 
    <div class="form-item"> 
     <label>Faculty URL</label> 
    </div> 
    <fieldset class="row2"> 
    <div class="form-submit" id="save-faculty"> 
     <%= f.submit "Send for Review" %> 
    </div> 
    </fieldset> 
<% end %> 

查看源示出以此爲:

<form accept-charset="UTF-8" action="/research/chr/casestudies/profile/vet_as_faculty" class="edit_user" id="vet-as-faculty" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="_method" type="hidden" value="put" /><input name="authenticity_token" type="hidden" value="FZtjli8HaGD3koUvSFAYR2Gy+waL8KDWflMNUo4tXXw=" /></div> 
    <fieldset class="row1"><legend>Vet Me As Faculty</legend> 
    <div class="form-pair" id="faculty-url"> 
     <div class="form-item"> 
     <label>Faculty URL</label> 
     </div> 
     <div class="form-value"> 
     <input id="user_faculty_url" name="user[faculty_url]" size="30" type="text" /> 
     </div> 
    </fieldset> 

    <fieldset class="row2"> 
    <div class="form-submit" id="save-faculty"> 
     <input name="commit" type="submit" value="Send for Review" /> 
    </div> 
    </fieldset> 
... 

所以,我看到對ID爲「ID = 「獸醫-AS-教師」 」。但是,測試沒有看到這一點。

測試代碼:

context "within the faculty vetting block" do 
    it "has the necessary form fields" do 
     within "form#vet-as-faculty" do 
     expect(page).to have_css("input#user_faculty_url") 
     expect(page).to have_css("input#save-faculty") 
     end 
    end 
end 

這一個測試的錯誤輸出:

3) Edit Profile View within the faculty vetting block has the necessary form fields 
    Failure/Error: within "form#vet-as-faculty" do 
    Capybara::ElementNotFound: 
    Unable to find css "form#vet-as-faculty" 
    # ./spec/features/edit_profile_view_spec.rb:48:in `block (3 levels) in <top (required)>' 

我試圖增加更多的在測試深入型CSS

within "#page #content form#vet-as-faculty" do 

表單在div#內部,內容在div#頁面內。這也沒有幫助。

有什麼想法?感謝您閱讀本文。

+0

你確定你在你認爲你在的頁面上嗎?在您與我們分享的測試中沒有訪問方法調用。 – DVG

+0

您是否嘗試過前面的'內部'塊?您可以在'it'塊中聲明您的期望(以便規格掃描整個頁面)並查看是否有幫助。水豚的功能規格可能相當變幻無常。祝你好運! – aceofbassgreg

+0

感謝您的回覆。也許代碼沒有看到視圖頁面。如前所述,我對rspec完全陌生。我看到一個有'後臺做'的塊。其中有一行:訪問edit_profile_path(@user)。我不知道這是否是你所指的。我會和編寫這個代碼的程序員一起去問他。謝謝 –

回答

1

最好的猜測是,你有沒有實際導航的頁面,你的表格是

before { visit new_my_model_path } 

作爲建議的更一般的作品。避免編寫只聲明標記/ css的測試。專注於你需要這種形式來完成的行爲,而你的測試將會更有價值。