【问题标题】:Continue after exception in RSpec在 RSpec 中出现异常后继续
【发布时间】:2010-02-28 04:19:34
【问题描述】:

有没有办法让 RSpec 在引发异常后继续处理规范?

这是我的规范任务的样子:

SPEC_PATTERN = "spec/**/*_spec.rb"
Spec::Rake::SpecTask.new() do |t|
  t.spec_files = FileList[SPEC_PATTERN]
  t.verbose = true
  t.spec_opts = ["--format", "html:spec/spec_report.html"]
  t.fail_on_error = false

  t.rcov = true
  t.rcov_dir = 'coverage'
  t.rcov_opts = ['--exclude', 'spec']
end

【问题讨论】:

  • 我遇到了同样的问题,所以我放了一个赏金。尽管有异常,我希望我的测试继续进行。我试过 t.fail_on_error,现在它唯一能做的就是不吐出“rake aborted”。我的“耙子规格”仍然停止。也可以有人或原始海报用 ruby​​-on-rails 标记它,所以它会引起更多的兴趣。
  • @Amala:你使用的是 rspec1 还是 rspec2?

标签: ruby-on-rails ruby rspec rake


【解决方案1】:

【讨论】:

  • 不应该引发异常。问题是我有一个失败的测试,当前引发了一个异常,并且 RSpec 任务立即退出——这意味着我看不到什么都通过了,什么都失败了。在 Test::Unit 中,我将获得所有通过/失败测试的列表,其中抛出的测试被视为失败。有没有办法在 RSpec 中获得该功能?
【解决方案2】:

rspec 确实捕获异常并将它们报告为失败,这与 test/unit 的方式大致相同。如果您看到任务退出,那是因为异常在 rspec 正在处理的代码之外,或者可能是语法错误。

HTH, 大卫

【讨论】:

  • 太好了,我会仔细检查我的测试,看看我是否在做一些愚蠢的事情。我会让你找到什么。
  • 我们确定吗?我也正在经历这种行为。我正在使用:rspec (2.0.0, 1.3.1) rspec-core (2.0.0) rspec-expectations (2.0.0) rspec-mocks (2.0.0) rspec-rails (1.3.3, 1.3.1)
【解决方案3】:
it "should not raise an exception" do
  expect {
    raise Exception unless true
  }.should_not raise_exception
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2018-07-06
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    相关资源
    最近更新 更多