我正在尝试为使用#create 方法写入数据库的方法编写规范,该方法会导致问题,因为它是使用未保存到数据库的对象创建的——有谁知道如何覆盖#create 所以它运行规范时不尝试保存到数据库?
我收到此错误:
ActiveRecord::RecordNotSaved:
You cannot call create unless the parent is saved
我正在尝试为使用#create 方法写入数据库的方法编写规范,该方法会导致问题,因为它是使用未保存到数据库的对象创建的——有谁知道如何覆盖#create 所以它运行规范时不尝试保存到数据库?
我收到此错误:
ActiveRecord::RecordNotSaved:
You cannot call create unless the parent is saved
正如@Raghu 指出的那样,您需要模拟/存根(请参阅http://blog.firsthand.ca/2011/12/example-using-rspec-double-mock-and.html)以避免实际运行 create 方法。您可能不想测试 create 是否真的有效。您更有可能测试 create 在正确的时间、正确的模型和正确的选项下被调用。
这是使用 Stub / Double的地方 (以前并且仍然通常称为“Mocks”)