我正在cucumber
使用capybara
我有几个类似的错误。
步骤:
Then /I should see movies of rating 'PG' or 'R'/ do
page.body.should match(/<td>PG<\/td>/)
page.body.should match(/<td>R<\/td>/)
end
黄瓜错误:
undefined method `match' for #<Cucumber::Rails::World:...> (NoMethodError)
./features/step_definitions/movie_steps.rb:37:in
`/I should see movies of rating 'PG' or 'R'/'
步骤:
Then /I should see an empty table/ do
page.body.scan(/<tr>/).length.should == 0
end
黄瓜错误:
undefined method `should' for 1:Fixnum (NoMethodError)
./features/step_definitions/movie_steps.rb:46:in
`/I should see an empty table/'
步骤:
Then /I should see all of the movies/ do
Movie.find(:all).length.should page.body.scan(/<tr>/).length
end
undefined method `should' for 10:Fixnum (NoMethodError)
./features/step_definitions/movie_steps.rb:59:in
`/I should see all of the movies/'
整个步骤文件是here
正如您所看到的,这些错误非常相似,但我无法理解导致此问题的原因。
答案 0 :(得分:9)
在我看来,您对rspec期望存在问题。尝试添加
require 'rspec/expectations'
到你的env.rb和等同于你的Gemfile。
答案 1 :(得分:1)
如果您使用的是MiniTest而不是Rspec,请尝试assert
即
assert page.body.scan(/<tr>/).length == 0, "Expected to not find <tr> in page. "
答案 2 :(得分:0)
只是提供一个替代方案(想想@ dabai的解决方案可能是最好的),你可以使用断言,比如:
assert Movie.find(:all).length == page.body.scan(/<tr>/).length