首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails3 + Rspec2 + Factorygirl关联

Rails3 + Rspec2 + Factorygirl关联
EN

Stack Overflow用户
提问于 2013-02-05 18:49:46
回答 1查看 113关注 0票数 0

我有以下模型

代码语言:javascript
复制
class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
        :recoverable, :rememberable, :trackable, :validatable
   
     attr_accessible :email, :password, :password_confirmation, :remember_me, :company_id
end


 class Company < ActiveRecord::Base
   attr_accessible :email, :name
 end


#test/factories/companies.rb
FactoryGirl.define do
  factory :company do
    name "sample company"
    email "sample@company.com"
  end
end

#test/factories/users.rb
FactoryGirl.define do
 factory :user do |u|
   u.email 'sameera@sample.com'
   u.password 'welcome'
   u.password_confirmation 'welcome'
   u.association :company, :factory => :company
 end
end


#spec/models/user_spec.rb
require 'spec_helper'
 
describe User do
   describe "Validations" do
     it "should validate the email" do
       user = FactoryGirl.build(:user, :email => nil)
       user.should have(1).error_on(:email)
     end
   end
end

但是我得到了这个错误,有了guard (即使在重新启动Guard之后)

代码语言:javascript
复制
15:47:35 - INFO - Running: spec/models/user_spec.rb
Running tests with args ["--drb", "-f", "progress", "-r", "/home/sameera/.rvm/gems/ruby-1.9.2-p290/gems/guard-rspec-2.4.0/lib/guard/rspec/formatter.rb", "-f", "Guard::RSpec::Formatter", "--failure-exit-code", "2", "spec/models/user_spec.rb"]...
F

Failures:

  1) User Validations should validate the email
     Failure/Error: user = FactoryGirl.build(:user, :email => nil)
     NoMethodError:
       undefined method `company=' for #<User:0x00000004dcee08>
     # ./spec/models/user_spec.rb:6:in `block (3 levels) in <top (required)>'

Finished in 0.16308 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/models/user_spec.rb:5 # User Validations should validate the email


Randomized with seed 26095

Done.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 18:57:47

您的User模型并没有像您的工厂假设的那样声明belongs_to关联:

您应该添加它:

代码语言:javascript
复制
class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
        :recoverable, :rememberable, :trackable, :validatable

     attr_accessible :email, :password, :password_confirmation, :remember_me, :company_id
  belongs_to :company
end

当然,这假设您的用户表有一个company_id列(但我猜您已经添加了它,就像您在attr_accessible中列出的那样)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14705739

复制
相关文章

相似问题

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