覆盖rspec中的create方法

时间:2013-09-05 18:24:29

标签: ruby-on-rails ruby rspec

我正在尝试为使用#create方法的方法编写规范,该方法写入导致问题的数据库,因为它是使用未保存到数据库的对象创建的 - 有没有人知道如何覆盖#创建,以便它在运行规范时不会尝试保存到数据库?

我收到此错误:

     ActiveRecord::RecordNotSaved:
   You cannot call create unless the parent is saved

2 个答案:

答案 0 :(得分:1)

正如@Raghu指出的那样,你需要模拟/存根(参见http://blog.firsthand.ca/2011/12/example-using-rspec-double-mock-and.html)以避免实际运行create方法。你可能不想测试create是否真的有效。您更有可能测试创建是在正确的时间,正确的模型和正确的选项上调用的。

答案 1 :(得分:0)

这是use a Stub / Double的地方(以前,通常也称为“模拟”)