Ruby on rails 工厂女孩没有正确制作属性
我正在一个名为Ruby on rails 工厂女孩没有正确制作属性,ruby-on-rails,ruby,rspec,factory-bot,Ruby On Rails,Ruby,Rspec,Factory Bot,我正在一个名为Form的模型上使用Rspec编写一个控制器规格测试。我使用FactoryGirl生成模型。当我在表单\u controller\u spec中运行单个测试时,它们都通过了。但是,当我运行整个文件时,我看到所有测试都失败了,错误消息是ActiveRecord::RecordInvalid: 验证失败:表单类型不能为空 这是我的forms.rbFactorygirl文件, 工厂女孩 factory :form do association :user se
Form
的模型上使用Rspec编写一个控制器规格测试。我使用FactoryGirl生成模型。当我在表单\u controller\u spec
中运行单个测试时,它们都通过了。但是,当我运行整个文件时,我看到所有测试都失败了,错误消息是ActiveRecord::RecordInvalid:
验证失败:表单类型不能为空
这是我的forms.rb
Factorygirl文件,
工厂女孩
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
我不知道个别测试是否通过,但当我运行整个文件时,测试失败了。我也不知道为什么
form\u type
是空的。您的:form\u attributes方法缺少一个适当的:form\u type值
let(:form_attributes) {
FactoryGirl.attributes_for(:form, "Form C", user: @current_user)
}
尽管您似乎也无法决定是要字符串还是整数,正如上面对
let(:forms)
的调用一样,您已经传入了整数3。这是一个不一致的问题,可能需要以这种或那种方式加以解决。您的:form\u attributes方法缺少:form\u type的适当值
let(:form_attributes) {
FactoryGirl.attributes_for(:form, "Form C", user: @current_user)
}
尽管您似乎也无法决定是要字符串还是整数,正如上面对
let(:forms)
的调用一样,您已经传入了整数3。这是一个不一致的问题,可能需要以某种方式加以解决。等等,我很困惑。我将整数3放入三个表单
模型中。我以为这就是语法。我之所以没有传递属性(form\u type
),是因为我认为工厂中的序列
:form do
块会自动生成属性,即使我没有像你一样明确地设置它,老实说,我从来没有使用过“序列”,所以你可能是对的。尽管如此,没有任何地方能给出像“form a”或“form C”这样的form_类型的值,这显然是你所期望的,所以我认为这就是你应该看到的变化,因为它当然没有被设置。等等,我很困惑。我将整数3放入三个表单
模型中。我以为这就是语法。我之所以没有传递属性(form\u type
),是因为我认为工厂中的序列
:form do
块会自动生成属性,即使我没有像你一样明确地设置它,老实说,我从来没有使用过“序列”,所以你可能是对的。尽管如此,没有任何地方能给出像“form a”或“form C”这样的form_类型的值,这显然是你所期望的,所以我认为这是你应该考虑改变的,因为它当然没有被设置。