Ruby on rails rails rspec电子邮件的不同处理

Ruby on rails rails rspec电子邮件的不同处理,ruby-on-rails,email,rspec,Ruby On Rails,Email,Rspec,我正在测试控制器规格的电子邮件发送,但测试无法检测到正在发送电子邮件。我可以在日志中看到它,但测试无法看到它。我怀疑测试是在不同于电子邮件的线程中执行的,因此测试无法看到它。有什么想法吗 控制器: def update if @task.save! Emailer.send_task_email(@task.creator, :task_assigned, @task.project, @task).deliver end end 控制器规格: it 'emails the c

我正在测试控制器规格的电子邮件发送,但测试无法检测到正在发送电子邮件。我可以在日志中看到它,但测试无法看到它。我怀疑测试是在不同于电子邮件的线程中执行的,因此测试无法看到它。有什么想法吗

控制器:

def update
  if @task.save!
    Emailer.send_task_email(@task.creator, :task_assigned, @task.project, @task).deliver
  end
end
控制器规格:

it 'emails the creator' do
  john = build(:user)
  task = create(:task, :creator => john, project: project)

  put :update, { :id => task.to_param }

  Emailer.should_receive(:send_task_email).with(task.creator, :task_assigned, task.project, task)
end

移动您的
电子邮件发送人。如果您收到
邮件,请在
行上方排队:更新
行。在调用将调用它的操作之前,您需要告诉它期待该调用。

最后,以下操作对我有效:
let(:mail){double(“mail”),:deliver=>true)}和Emailer.should_receive(:send_task_email)。with(task.creator,:task_assigned,task.project,task)。和_return(mail)