2015-07-22 9 views
5

mam ten Rails html.erb postać:Jaka jest różnica między Rspec have_css, have_selector i has_field?

<h1 class=new_vendor_header>New Vendor Form</h1> 

<%= form_for(@vendor) do |f| %> 
    <%= f.label :name %> 
    <%= f.text_field :name, placeholder: "ex: Jeff" %> 
    <%= f.submit "Submit" %> 
<% end %> 

To przechodzi:

expect(page).to have_selector('input[placeholder="ex: Jeff"]') 

ale to nie:

expect(page).to have_field('input[placeholder="ex: Jeff"]') 

a nie:

expect(page).to have_selector('input[placeholder="ex: Jeff"]') 

Selector odnosi się do selektora HTML, więc odnosi się do elementów html? have_css Myślałem, że szukałem CSS, ale wydaje się, że robi więcej. Oto przykład z arkusza do ściągnięcia:

response.body.should have_css("input", :count => 3) #True if there are 3 input tags in response 

Wygląda na to, że szukamy wejściowych selektorów HTML.

Jaka jest różnica i dlaczego pozostałe dwa zawodzą w moim przykładzie?

+0

Zauważ, że '' have_selector' have_css' i nie są częścią samej RSpec , ale są dostarczane przez [kapibara] (https://github.com/teamcapybara/capybara) – GMA

Odpowiedz

4

Od Docs herehave_css wezwie has_selector z css jako param, jak has_selector poradzi css, xpath ...

def have_css(css, options={}) 
     HaveSelector.new(:css, css, options) 
end 
Powiązane problemy