2012-04-12 38 views
1

我在Rails上編寫測試方面有點新,我正在跟着RoR教程​​。我試圖添加我自己的測試實用程序方法sign_up,類似於utility.rb中已有的sign_in方法。當調用它對着我的註冊頁面,不過,我得到這個錯誤:調用utility_rb中的sign_up實用程序測試方法失敗

2) User pages index pagination as an admin user to unlock new users 
    Failure/Error: sign_up user 
    Capybara::ElementNotFound: 
     cannot fill in, no text field, text area or password field with id, name, or label 'Name' found 
    # (eval):2:in `fill_in' 
    # ./spec/support/utilities.rb:33:in `sign_up' 
    # ./spec/requests/user_pages_spec.rb:63:in `block (5 levels) in <top (required)>' 

我sign_up方法是這樣的:

def sign_up(user) 
    visit signup_path 
    fill_in "Name",   with: user.name 
    fill_in "Email",  with: user.email 
    fill_in "Password",  with: user.password 
    fill_in "Confirmation", with: user.password 
    click_button "Sign up" 
end 

它似乎開始出問題甚至只是逛signup_path - 我甚至不確定它會去那裏。此外,如果我將fill_in "Name"行註釋掉,它將以相同的方式扼住fill_in "Email"行。

關於這裏發生了什麼的任何建議或想法將不勝感激。

感謝, -Matt

回答

0

燈泡終於去上。

當您使用工廠創建用戶時,它會將其插入到數據庫中。所以,當您進入註冊頁面並嘗試使用該用戶時,它已經存在,您將被重定向到主頁。這意味着沒有任何字段可以與fill_in一起使用。簡化規格:

require 'spec_helper' 

describe "signup page" do 
    subject { page } 

    describe "with valid information" do 
    before { sign_up('em', '[email protected]', '123456') } 
    it { should have_title_and_h1('em') } 
    end 
end 

實用方法:

def sign_up(name, email, password) 
    visit signup_path 
    fill_in "Name",   with: name 
    fill_in "Email",  with: email 
    fill_in "Password",  with: password 
    fill_in "Confirmation", with: password 
    click_button "Create my account" 
end 

將創建通過瀏覽器界面的用戶。

相關問題