无法从 Cucumber 2.3.2 中的 scenario.file 获取场景的文件名
Can't get a scenario's filename from scenario.file in 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
如果文件 /features/user_features/user_login.feature
中第 12
行的方案失败,那么,而不是默认的水豚页面转储文件名
tmp/capybara/capybara-5654648798738734.html
转储将以更好的文件名保存:
tmp/capybara/failed--user_features-user_login.feature--12.html
所以如果有很多失败,我立即知道哪个转储是正确的。
这适用于 Cucumber 1.3.2。
今天我更新了 gems 并得到了 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
(深埋在 Capybara 文件下面)。
现在是否有可能获取脚本文件路径和脚本开始的行号?
在 Cucumber 2 中,file
和 line
是 scenario
的 location
的属性,而不是 scenario
本身的属性。将 scenario.file
替换为 scenario.location.file
,将 scenario.line
替换为 scenario.location.line
。
我在 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
如果文件 /features/user_features/user_login.feature
中第 12
行的方案失败,那么,而不是默认的水豚页面转储文件名
tmp/capybara/capybara-5654648798738734.html
转储将以更好的文件名保存:
tmp/capybara/failed--user_features-user_login.feature--12.html
所以如果有很多失败,我立即知道哪个转储是正确的。
这适用于 Cucumber 1.3.2。
今天我更新了 gems 并得到了 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
(深埋在 Capybara 文件下面)。
现在是否有可能获取脚本文件路径和脚本开始的行号?
在 Cucumber 2 中,file
和 line
是 scenario
的 location
的属性,而不是 scenario
本身的属性。将 scenario.file
替换为 scenario.location.file
,将 scenario.line
替换为 scenario.location.line
。