rails rspec电子邮件不同的过程

时间:2012-11-18 04:08:02

标签: 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 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

1 个答案:

答案 0 :(得分:2)

Emailer.should_receive行移到put :update行之上。在调用将调用它的操作之前,您需要告诉它期望该调用。