0

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

控制器:

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
4

1 回答 1

2

将您的Emailer.should_receive线路向上移动到您的线路上方put :update。在调用将调用它的操作之前,您需要告诉它期待该调用。

于 2012-11-18T04:21:43.997 回答