我使用Cucumber / Ruby运行场景,每次测试运行时,RSpec都会捕获错误。将跳过所有剩余步骤(步骤定义)。我不希望他们跳过。我希望程序完全运行,只报告发生的问题。关于如何让这个工作的任何想法?
它看起来像这样:
RSpec :: Expectations :: ExpectationNotMetError:expect" something"不包括"别的东西"
跳过步骤
跳过步骤
跳过步骤
跳过步骤
跳过步骤
跳过步骤
跳过步骤
跳过步骤
跳过步骤
跳过步骤
答案 0 :(得分:1)
免责声明:正如安东尼指出的那样,这不是最佳做法,但我认为你有充分的理由要求。 :)
您需要构建某种形式的错误收集器。捕获每个RSpec异常并将该错误添加到收集器。在After hook中,检查收集器是否包含某些内容,如果有,则检查方案是否失败。您还希望充实收集的错误消息,以包含有关哪个步骤失败以及失败的位置的更多信息。这只是一个简单的方法,可以让您了解该怎么做。
关键是要拯救并记录你的错误,然后再处理它们。
test.feature
Scenario: Test out someting
Given this step passes
And this step has a collected error
Then this step passes
test_stepdef.rb
Given(/^this step passes$/) do
# keep on keeping on
end
Given(/^this step has a collected error$/) do
begin
1.should eq(0)
rescue RSpec::Expectations::ExpectationNotMetError => e
@collected_errors.push e.message
end
end
支持/ hooks.rb
Before do |scenario|
@collected_errors = []
end
After do |scenario|
fail "#{@collected_errors}" unless @collected_errors.empty?
end
输出
Scenario: Test out someting # features/test.feature:6
Given this step passes # features/stepdefs/test_stepdef.rb:2
And this step has a collected error # features/stepdefs/test_stepdef.rb:6
Then this step passes # features/stepdefs/test_stepdef.rb:2
["expected: 0
got: 1
(compared using ==)"] (RuntimeError)
features/support/hooks.rb:21:in `After'
Failing Scenarios:
cucumber features/test.feature:6 # Scenario: Test out someting