首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSpec错误用户必须与FactoryGirl一起存在

RSpec错误用户必须与FactoryGirl一起存在
EN

Stack Overflow用户
提问于 2017-02-14 09:16:02
回答 1查看 1.9K关注 0票数 7

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

这是我的模型composition.rb

代码语言:javascript
复制
class Composition < ActiveRecord::Base
  belongs_to :user
  belongs_to :group

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

end

这是我的FactoryGirl文件composition.rb

代码语言:javascript
复制
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测试

代码语言:javascript
复制
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来创建记录时,一切都很好。

有谁知道为什么会失败吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-14 09:21:19

您不需要将FactoryGirl作为模型的参数传递

代码语言:javascript
复制
@composition = FactoryGirl.create(:composition, user: @user, group: @group)

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

代码语言:javascript
复制
@composition = FactoryGirl.build(:composition, user: @user, group: @group)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42222049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档