【发布时间】:2011-07-18 14:08:58
【问题描述】:
我正在尝试为延迟工作编写 rspec。
目前我使用延迟作业如下:
class IncomingMailsController < ApplicationController
...
MailingJob.new(@incoming_mail.id).perform
...
end
然后在/lib/mailing_job.rb:
class MailingJob < Struct.new(:mailing_id)
def perform
.......
如何使用 rspec 进行测试?现在我有:
/spec/lib/mailing_job/mailingjob_spec.rb
require 'spec_helper'
describe MailingJob do
include DelayedJobSpecHelper
it "should have been worked on if I do something that queues jobs" do
@incoming_mail = IncomingMail.create(.........)
MailingJob.new(@incoming_mail.id).perform
#IncomingMail.method_that_queues_jobs
work_off
MailingJob.should be_worked_on
end
end
/spec/lib/delayed_job_spec_helper.rb
module DelayedJobSpecHelper
# http://erikonrails.snowedin.net/?p=230
def work_off
Delayed::Job.all.each do |job|
job.payload_object.perform
job.destroy
end
end
end
但是这个错误:
1) MailingJob should have been worked on if I do something that queues jobs
Failure/Error: MailingJob.should be_worked_on
NoMethodError:
undefined method `worked_on?' for MailingJob:Class
# ./spec/lib/mailing_job/mailingjob_spec.rb:19
想法?谢谢
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 rspec delayed-job rspec2