2014-01-21 97 views
2

雖然runnng我的RSpec的測試中,我得到了一個錯誤 水豚:: ElementNotFound:無法找到現場「名」水豚fill_in只適用於字段ID,爲什麼?

我rspec的試驗如下

describe "with valid information" do 
    before do 
    puts page.body 
    fill_in "First Name", with: "Matthew" 
    fill_in "Email",  with: "[email protected]" 
    fill_in "Password",  with: "foobar" 
    end 

    it "should create a user" do 
    expect { click_button submit }.to change(User, :count).by(1) 
    end 
end 

我的表單視圖是這樣

<%= form_for(@user) do |f| %> 
    <%= f.label :first_name %> 
    <%= f.text_field :first_name %> 

    <%= f.label :email %> 
    <%= f.text_field :email %> 

    <%= f.label :password %> 
    <%= f.password_field :password %> 

    <%= f.submit "Create my account", class: "btn btn-large btn-primary" %> 
<% end %> 

那麼幾個小時撲頭後,我試着更換

fill_in "First Name", with: "Matthew" 

fill_in "user_first_name", with: "Matthew" 

(即使用字段ID而不是名稱)

我的問題是爲什麼這隻與字段id('user_first_name'),而不是字段名稱('名字')?

+1

該字段的標籤實際上是「名」,而不是「名」或「名」或其他? 'fill_in'將與字段ID,標籤或名稱一起使用。 – sevenseacat

回答

1

當您執行f.label :first_name時,Rails使用human_attribute_namemethod輸出標籤文本。

這意味着標籤的文本是「名字」,而不是「名字」,所以這就是你需要提供給Capybara的。