Cucumber 2.0中不存在After-hook scenario.exception

时间:2015-05-26 17:08:30

标签: ruby selenium cucumber capybara

我正在使用Capybara,Cucumber和Selenium-Webdriver进行基本的Web测试。如果测试失败,我想捕获失败消息并将其发送到单独的日志文件。

Cucumber提供钩子来捕获场景失败后的失败消息(来自他们的wiki):

After do |scenario|
  if scenario.failed?
    subject = "[Project X] #{scenario.exception.message}"
    send_failure_email(subject)
  end
end

但是,当我在features/support/support.rb文件中实现它时,我得到一个no方法错误:

undefined method `exception' for #<Cucumber::RunningTestCase::Scenario:0x007fc7b4380968>

这个错误是我设置的结果,还是特定于Cucumber 2.0的错误?

以下是features/support/support.rb的代码:

require 'capybara/cucumber'
Capybara.default_driver = :selenium

After do |scenario|
    if scenario.failed?
        puts scenario.exception.message
    end
end

以下是features/step_definitions/step_definition.rb的代码:

Given(/^I am on the Google homepage$/) do
  visit 'http://www.google.com'
end

Then(/^I will search for "(.*?)"$/) do |searchText|
  fill_in 'lst-ib', :with => searchText
end

Then(/^I should see "(.*?)"$/) do |expectedText|
  page.should have_content(expectedText)
end

Then(/^I will click the Product link$/) do
  click_link('Product')
end

以下是features/findGameSparks.feature的代码:

Feature: Find the GameSparks Website

Scenario: Search for the website        
    Given I am on the Google homepage
    Then I will search for "GameSparks"
    Then I should see "A NON-EXISTENT STRING CAUSING TEST FAILURE!!!!"
    Then I will click the Product link

以下是我正在使用的所有内容的版本号:

OSX 10.10.1
ruby 2.2.1p85
rvm 1.26.11
gem 2.4.6
cucumber 2.0.0
cucumber-core 1.1.3
capybara 2.4.4
selenium-webdriver 2.45.0

1 个答案:

答案 0 :(得分:1)

此错误已在4月1日的此提交中修复:https://github.com/cucumber/cucumber/commit/e92917c8f10a4907dedf26d77665116b69f3e3b9

最新发布的Cucumber是2.0.0,于3月27日发布,所以似乎修复尚未发布。

您可以指向Gemfile中的github repo以获取最新的可用代码:

gem 'cucumber', git: 'https://github.com/cucumber/cucumber.git'

但请注意,运行&#34;预发布&#34;像这样的代码可能会导致其他问题,例如,如果黄瓜的提交者弄乱了主分支。