Resque::TermException 的最小测试救援块
minitest test rescue block for Resque::TermException
我正在用 minitest 为 resque worker 编写测试。
如果 Resque 被终止并向工作人员发送 Resque::TermException,我该如何为被调用的救援块编写测试?
我的方法是对 worker 调用的方法之一进行存根,然后让它引发 Resque::TermException。
有时我可以引发异常,但它发生在错误的时间并终止了测试运行。现在我尝试了这样的事情:
(我正在使用 fixtures 和 mocha)
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'
...
Mocha 当前将此语法用于存根和加注:
object.stubs(:expected_method).raises(Exception, 'message')
见http://www.rubydoc.info/github/floehopper/mocha/Mocha/Expectation:raises
您可能使用的是语法不同的旧版 Mocha 吗?
或者您可能不小心使用了 RSpec 语法?
我正在用 minitest 为 resque worker 编写测试。
如果 Resque 被终止并向工作人员发送 Resque::TermException,我该如何为被调用的救援块编写测试?
我的方法是对 worker 调用的方法之一进行存根,然后让它引发 Resque::TermException。
有时我可以引发异常,但它发生在错误的时间并终止了测试运行。现在我尝试了这样的事情: (我正在使用 fixtures 和 mocha)
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'
...
Mocha 当前将此语法用于存根和加注:
object.stubs(:expected_method).raises(Exception, 'message')
见http://www.rubydoc.info/github/floehopper/mocha/Mocha/Expectation:raises
您可能使用的是语法不同的旧版 Mocha 吗?
或者您可能不小心使用了 RSpec 语法?