Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 工厂女孩没有正确制作属性_Ruby On Rails_Ruby_Rspec_Factory Bot - Fatal编程技术网

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_类型的值,这显然是你所期望的,所以我认为这是你应该考虑改变的,因为它当然没有被设置。