Ruby on rails Rspec中的存根记录创建
我有一个builder类,它应该创建新记录,比如:Ruby on rails Rspec中的存根记录创建,ruby-on-rails,ruby,activerecord,rspec,rspec-rails,Ruby On Rails,Ruby,Activerecord,Rspec,Rspec Rails,我有一个builder类,它应该创建新记录,比如: ObjectBuilder creates Object Object它是一个继承的类 我想在Rspec中测试是否创建了特定记录 但是,只在创建特定记录时进行测试就足够了,而不需要数据库调用。那么我怎样才能用存根AR对象来检查这个呢 对于可能的答案,我无法将NullDB集成到我的项目中,并且我不会在Object中创建自定义方法,该方法将负责创建记录,并且很容易存根。我想依赖于ActiveRecord接口。我认为您需要准确地决定您要在这里测试什
ObjectBuilder creates Object
Object
它是一个继承的类
我想在Rspec
中测试是否创建了特定记录
但是,只在创建特定记录时进行测试就足够了,而不需要数据库调用
。那么我怎样才能用存根AR对象来检查这个呢
对于可能的答案,我无法将
NullDB
集成到我的项目中,并且我不会在Object
中创建自定义方法,该方法将负责创建记录,并且很容易存根。我想依赖于ActiveRecord
接口。我认为您需要准确地决定您要在这里测试什么。如果您正在测试ActiveRecord是否工作,那么您就走错了路。ActiveRecord本身经过了彻底的测试,您在应用程序中添加的任何进一步测试都有些多余
请在此处查看ActiveRecord测试、它们是如何工作的、涵盖了哪些内容等:
我认为您可能想测试的是,当您在应用程序中调用@object.save
时,您的对象是否能够被保存。如果是这种情况,那么只需调用#valid?
方法,您就可以轻松地进行测试,而无需真正保存对象。如果对象无效,ActiveRecord将不会保存该对象
这样就足够了:
require 'spec_helper'
describe Object do
before(:each) do
object = Object.new(attr1: 'required')
end
it "is valid with required attributes" do
expect(object).to be_valid
end
it "is not valid without an attr1" do
object.attr1 = nil
expect(object).not_to be_valid
end
end
您可以通过将rspec-collection\u matchers
gem添加到您的项目中并执行以下操作来更全面地测试验证:
it "is not valid without an attr1" do
object.attr1 = nil
expect(object).to have(1).errors_on(:attr1)
end
我没有试过任何具体的方法。我拒绝了上述两种方法。这似乎是一个共同的需要,所以我认为有人已经遇到了。没有共同的需要,因为:1。在rails 2中,不使用生成器模式创建对象。您只需在模型类上存根
create
。请使用有效的示例代码更新您的问题