Невозможно получить имя файла сценария из scene.file в Cucumber 2.3.2

У меня есть этот код в приложении Rails /features/support/hooks.rb:

After do |scenario|
  if scenario.failed?
    filename = "#{FAILED_DIR_PATH}/failed--#{scenario.file.gsub("features/","").gsub("/","-")}--#{scenario.line}.html"
    Capybara.save_page filename
  end
end

Если сценарий на линии 12 в файле /features/user_features/user_login.feature не удалось, вместо имени файла дампа страницы по умолчанию капибара

tmp/capybara/capybara-5654648798738734.html

дамп будет сохранен с лучшим именем файла:

tmp/capybara/failed--user_features-user_login.feature--12.html

поэтому, если будет много сбоев, я сразу узнаю, какой дамп правильный.

Это работало в огурце 1.3.2.

Сегодня я обновил драгоценные камни и получил Cucumber 2.3.2 и получил эту ошибку:

 undefined method `file' for #<Cucumber::RunningTestCase::Scenario:0x007f9598abb230>

Если я отлажу это, scenario имеет только эти методы:

Cucumber::RunningTestCase::Scenario#methods: 

accept_hook?  exception  failed?  outline?  passed?  skip_invoke!  source_tag_names  source_tags  status  title   with_result

Единственное место, где я могу найти имя файла, находится в scenario.exception.backtrace (глубоко похоронен под файлами Капибары).

Есть ли теперь возможность получить путь к файлу сценария и номер строки, с которой начался сценарий?

1 ответ

Решение

В огурце 2 file а также line являются атрибутами scenario"s locationне из scenario сам. замещать scenario.file с scenario.location.file а также scenario.line с scenario.location.line,

Другие вопросы по тегам