ruby-on-rails RSpec错误用户必须与FactoryGirl存在

wgx48brx  于 2023-03-04  发布在  Ruby
关注(0)|答案(2)|浏览(140)

我正在创建一些测试来测试一个控制器和模型。当我使用FactoryGirl来创建假数据时,我得到了用户(记录所属)不存在的错误。
这是我的模型组成。rb

class Composition < ActiveRecord::Base
  belongs_to :user
  belongs_to :group

  validates :name, presence: true, uniqueness: {scope: :user_id}

end

这是我的FactoryGirl文件组成.rb

require 'faker'

FactoryGirl.define do
  factory :composition do
    name { Faker::Name.name }
    description { Faker::Lorem.words }
    import_composition { Faker::Boolean.boolean }
    import_composition_file { Faker::File.file_name('path/to') }
  end
end

这是迄今为止我所做的RSpec测试

require 'rails_helper'

  describe CompositionsController do

    before(:each) do
       @user = FactoryGirl.create(:user)
       @group = FactoryGirl.create(:group)
       sign_in @user
       @composition = Composition.new(FactoryGirl.create(:composition), user_id: @user.id, group_id: @group.id)
    end

  describe "GET #index" do
    it "renders the index template" do
      get :index

      expect(assigns(:composition).to eq(@composition))
      expect(response).to render_template("index")
    end
  end

end

现在我得到一个错误:验证失败:用户必须存在,组必须存在
当我不使用FactoryGirl创建记录时,一切都很正常。
有人能解释一下为什么会失败吗?

fsi0uk1n

fsi0uk1n1#

不需要将FactoryGirl作为参数传递给Model

@composition = FactoryGirl.create(:composition, user: @user, group: @group)

如果您不想创建记录,而只想初始化它,请使用build而不是create

@composition = FactoryGirl.build(:composition, user: @user, group: @group)
7uhlpewt

7uhlpewt2#

您的某些依赖项正在破坏用户模型,这就是为什么没有创建用户的原因,您需要再次指定primary_key:

class User < ApplicationRecord
  self.primary_key = 'id'
end

相关问题