使用has_selector for rspec的NoMethodError

时间:2014-03-02 22:50:55

标签: testing rspec capybara

这些是我的测试:

it "should have the title 'Contact'" do

  visit '/static_pages/contact'

  expect(page).to have_title("Rails Development | Contact")

end



it "should have 'h1'" do

  visit '/static_pages/contact'

  expect(page).to has_selector?('h1')

end

为什么第一个测试正常,但第二个测试给我NoMethodError?

1)

Static Pages Contact page should have 'h1'

 Failure/Error:expect(page).to has_selector?('h1')

 NoMethodError:

   undefined method `matches?' for true:TrueClass

1 个答案:

答案 0 :(得分:1)

RSpec方法to需要一个RSpec Matcher,但是你已经传递了has_selector的结果,如果成功,则为true,从而导致你得到的错误。

Capybara方法has_selector?旨在由RSpec匹配器have_selector隐式使用,如:

expect(page).to have_selector('h1')

有关详细信息,请参阅https://github.com/jnicklas/capybara#querying