如何测试更改单独模型的模型方法?

时间:2016-06-29 22:32:57

标签: ruby-on-rails ruby rspec

我刚刚开始学习rspec,并且在确定如何测试特定模型方法时遇到了一些麻烦。基本上,我有一个用户可以回复的Thread模型。每当保存对该线程的回复时,运行此方法以更新线程的updated_at列。

def update_thread_timestamp
  Thread.where(id: thread_id).update_all("updated_at" => Time.now)
end

这是我对该方法的rspec测试:

it "#update_thread_timestamp updates the parent thread's updated_at column" do
  t = Factory.build(:thread, updated_at: nil)
  new_comment = Factory.build(:comment, thread_id: t.id)
  expect{new_comment.update_thread_timestamp}.to change{t.updated_at}
end

这里的问题是每当我运行测试时它都会失败,这样: result should have changed, but is still nil。 rspec是否存在直接数据库调用的问题?我对此感到茫然。

0 个答案:

没有答案