我不明白为什么我的2规格记录不回滚: 我有2张桌子,县有很多医院
require "rails_helper"
RSpec.describe Hospital, type: :model, focus: true do
context "created along with new hospital created" do
it "should create new hospital" do
@prefecture = FactoryGirl.create(:prefecture)
hospital = FactoryGirl.build(:hospital, id: 10, prefecture: @prefecture)
expect { hospital.save }.to change { Hospital.count }.by 1
end
it "should save" do
@prefecture = FactoryGirl.create(:prefecture)
hospital = FactoryGirl.build(:hospital, id: 10, prefecture: @prefecture)
hospital.save
end
end
end
如果我运行它将显示错误“db = 10中存在id = 10” 谁能解释我错在哪里? 谢谢。
答案 0 :(得分:0)
FactoryGirl不负责任。您有两个选择:
通常,模型测试将使用转换,数据库清理器用于无法在事务中操作的集成/验收测试,因为单独的进程(浏览器)需要读取测试中创建的数据。
答案 1 :(得分:0)
默认情况下,rspec不会为每个测试重置数据库。你需要配置它。是因为您的第二次测试正在下降,已经存在医院 id = 10 。
当你为第二次测试删除参数 id 并成功运行时, FactoryGirl 会自动生成新 id < / strong>即可。
FactoryGirl中的方法构建将不填充属性 id ,只有其他属性。是因为当您在构建方法之后调用保存时,FactoryGirll会生成新 ID 并且您的测试成功通过