コントローラとモデルをテストするテストを作成しています。 FactoryGirlを使って偽のデータを作成すると、User(レコードが属する)が存在しないというエラーが発生します。ここでRSpecエラーFactoryGirlにユーザが存在する必要があります
は、ここに私のモデルcomposition.rb
class Composition < ActiveRecord::Base
belongs_to :user
belongs_to :group
validates :name, presence: true, uniqueness: {scope: :user_id}
end
は私FactoryGirlファイルcomposition.rbは、これは私がこれまでのところ
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
まで持って私のRSpecのテストである
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
です
今すぐエラーが表示されます:検証に失敗しました:ユーザーは存在する必要があります。Gルックアップが存在する必要があります
私はFactoryGirlを使ってレコードを作成しませんが、すべて正常に動作します。
体には何故失敗しているのかの示唆がありますか?あなたがレコードを作成したいが、それは、初期化の代わりにbuild
を使用したくない場合は
'' '@composition = FactoryGirl.create(:composition、user_id:@ user.id、group_id:@ group.id)' '' – cutalion