Ruby on rails 每次测试前FactoryGirl中重置顺序的正确方法
无论何时制作模型,我都使用FactoryGirl并填充unique属性。我的模型Ruby on rails 每次测试前FactoryGirl中重置顺序的正确方法,ruby-on-rails,ruby,rspec,factory-bot,Ruby On Rails,Ruby,Rspec,Factory Bot,无论何时制作模型,我都使用FactoryGirl并填充unique属性。我的模型form的问题在于,只有4种不同的类型可用于form\u type属性。因此,每次运行测试时,我都需要重置序列。如下所示,我在执行之前使用用户阻止调用FactoryGirl.reload。然而,我看到一篇文章说这是反模式的FactoryGirl。在FactoryGirl中重置序列而不是在每次测试前调用FactoryGirl.reload的最佳方法是什么 这是我的forms.rbFactorygirl文件 Factor
form
的问题在于,只有4种不同的类型可用于form\u type
属性。因此,每次运行测试时,我都需要重置序列。如下所示,我在执行之前使用用户
阻止调用FactoryGirl.reload
。然而,我看到一篇文章说这是反模式的FactoryGirl。在FactoryGirl中重置序列而不是在每次测试前调用FactoryGirl.reload
的最佳方法是什么
这是我的forms.rb
Factorygirl文件
FactoryGirl.define do
factory :form do
association :user
sequence :form_type do |n|
Form.form_types.values[n]
end
end
end
这是我的form.rb模型文件:
class Form < ActiveRecord::Base
belongs_to :user, required: true
enum form_types: { :a => "Form A", :b => "Form B", :c => "Form C", :d => "Form D"}
validates :form_type, presence: true
validates :form_type, uniqueness: {scope: :user_id}
end
嗯,FG序列的目的似乎是确保唯一的数字。或者至少这就是我用它的目的。如果这是你真正想要的,你也许可以侵入FG
这个问题可能会有所帮助
Hm,FG序列的目的似乎是确保唯一的数字。或者至少这就是我用它的目的。如果这是你真正想要的,你也许可以侵入FG
这个问题可能会有所帮助
require 'rails_helper'
RSpec.describe FormsController, type: :controller do
login_user
let(:form) {
FactoryGirl.create(:form, user: @current_user)
}
let(:forms) {
FactoryGirl.create_list(:form , 3, user: @current_user)
}
let(:form_attributes) {
FactoryGirl.attributes_for(:form, user: @current_user)
}
describe "GET #index" do
before do
FactoryGirl.reload
end
it "loads all of the forms into @forms" do
get :index
expect(assigns(:forms)).to match_array(@forms)
end
end
end