У меня есть определенный путь:
when /the admin home\s?page/
"/admin/"
У меня есть сценарий, который проходит:
Scenario: Let admins see the admin homepage
Given "pojo" is logged in
And "pojo" is an "admin"
And I am on the admin home page
Then I should see "Hi there."
И у меня есть сценарий, который терпит неудачу:
Scenario: Review flagged photo
Given "pojo" is logged in
And "pojo" is an "admin"
...bunch of steps that create stuff in the database...
And I am on the admin home page
Then ... the rest of the steps
Шаг, который не выполняется во втором шаге, - «И я на главной странице администратора», который в первом сценарии проходит очень хорошо.
Вот ошибка, которую я получаю:
And I am on the admin home page # features/step_definitions/web_steps.rb:18
undefined method `add' for {}:Hash (NoMethodError)
./app/controllers/admin_controller.rb:13:in `index'
./app/controllers/admin_controller.rb:11:in `each'
./app/controllers/admin_controller.rb:11:in `index'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
./features/step_definitions/web_steps.rb:19:in `/^(?:|I )am on (.+)$/'
features/admin.feature:52:in `And I am on the admin home page'
Это очень странно ... с чего бы это было хорошо в первом случае, а не во втором, где единственным отличием является набор шагов, которые создают записи в БД?
[править]
Вот шаг добавления материала в базу данных:
Given /^there is a "([^\"]*)" with the following:$/ do |model, table|
model.constantize.create!(table.rows_hash)
end