用于Resque :: TermException的minitest测试救援块

时间:2015-02-21 01:23:25

标签: ruby exception resque minitest rescue

我正在用minitest为resque工人编写测试。

如何在Resque被终止并向工作人员发送Resque :: TermException的情况下为被调用的救援块编写测试?

我的方法是对工作者调用的方法之一进行存根,并使其引发Resque :: TermException。

有时我可以提出异常,但它发生在错误的时间并杀死了testrun。现在我尝试了这样的事情: (我使用灯具和摩卡)

test "if interrupted it removes the file" do
  CSV.stub(:open).and_raise(Resque::TermException.new(15))

  report = Report.find_by_id(1)
  Report.expects(:find_by_id).returns(report)

  ReportJob.perform({ 'test' => 'test' })
  refute File.exist? ReportJob.report_file(report)
end

但运气不好:

1) Error:
ReportTest#test_if_interrupted_it_removes_file:
ArgumentError: wrong number of arguments (1 for 2)
test/resque-tasks/spreadsheet_report_test.rb:2:in `block in <class:ReportTest>'
/Users/me/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/test/unit/testcase.rb:17:in `run'
/Users/me/.rvm/gems/ruby-1.9.3-p448/gems/activesupport-3.1.10/lib/active_support/testing/setup_and_teardown.rb:36:in `block in run'
...

1 个答案:

答案 0 :(得分:1)

Mocha目前使用此语法进行存根和提升:

object.stubs(:expected_method).raises(Exception, 'message')

请参阅http://www.rubydoc.info/github/floehopper/mocha/Mocha/Expectation:raises

您是否正在使用旧版本的Mocha,语法不同?

或者您是否有可能在意外使用RSpec语法?