我正在使用以下内容:
minitest 5.3.5
cucumber 1.3.15
capybara 2.3.0
capybara_minitest_spec 1.0.2
rails 4.1.1
cucumber-rails 1.4.1
和我的黄瓜/水豚代码
Then(/^I should see "(.*?)"$/) do |string|
page.has_content?(string)
end
使用任何字符串,在页面上是独立的还是不返回true。我试过使用capybara_minitest_spec gem,我的代码变成了
Then(/^I should see "(.*?)"$/) do |string|
page.must_have_content(string)
end
然后我有错误
Then I should see "Test" # features/step_definitions/pages_steps.rb:9
undefined method `assert_page_has_content' for nil:NilClass (NoMethodError)
(eval):4:in `must_have_content'
./features/step_definitions/pages_steps.rb:10:in `/^I should see "(.*?)"$/'
features/can_access_home.feature:7:in `Then I should see "Test"'
太奇怪了。使用save_and_open_page,我看到我的页面没有任何问题。你可以帮我解决一下吗?
PS:我使用minitest而不是rspec
答案 0 :(得分:1)
Then(/^I should see "(.*?)"$/) do |string|
page.has_content?(string)
end
这不是断言,这是一个返回布尔值的方法。断言会抛出异常,这就是测试失败的原因。
如果要断言字符串的存在,则必须使用:
Then(/^I should see "(.*?)"$/) do |string|
assert page.has_content?("Home#index")
end
page.must_have_content
实际上做同样的事情,除了你的错误说page
是零。
答案 1 :(得分:0)
我已解决以下问题
Then(/^I should see "(.*?)"$/) do |string|
assert page.has_content?(string)
end