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?
Zauważ, że '' have_selector' have_css' i nie są częścią samej RSpec , ale są dostarczane przez [kapibara] (https://github.com/teamcapybara/capybara) – GMA