Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 未通过新对象有效性的Rspec测试_Ruby On Rails_Rspec_Factory Bot_Railstutorial.org - Fatal编程技术网

Ruby on rails 未通过新对象有效性的Rspec测试

Ruby on rails 未通过新对象有效性的Rspec测试,ruby-on-rails,rspec,factory-bot,railstutorial.org,Ruby On Rails,Rspec,Factory Bot,Railstutorial.org,我完成了Michael Hartl的Ruby on Rails教程,所有测试都通过了。现在,我将返回并对站点进行更改以满足我自己的需要,这并不像本节中的测试没有通过那样简单。我已经创建了一个新的慈善对象,它强烈地基于哈特尔的Micropost对象。唯一的区别是对象没有内容,而是有:name、:description和:summary 这是失败测试的代码,特别是位于/charity_spec.rb中的{should'u valid}: 测试一开始实际上通过了,但一旦我将验证添加到charity.r

我完成了Michael Hartl的Ruby on Rails教程,所有测试都通过了。现在,我将返回并对站点进行更改以满足我自己的需要,这并不像本节中的测试没有通过那样简单。我已经创建了一个新的慈善对象,它强烈地基于哈特尔的Micropost对象。唯一的区别是对象没有内容,而是有:name、:description和:summary

这是失败测试的代码,特别是位于/charity_spec.rb中的{should'u valid}:

测试一开始实际上通过了,但一旦我将验证添加到charity.rb文件中,它们就会返回

 Failures:
   1) Charity
      Failure/Error: it { should be_valid }
         expected valid? to return, true, got false
         ...
这是charity.rb:

当我从charity.rb中删除:name、:summary和:description验证时,测试通过。下面是my user.rb的开头:


利用你的工厂进行适当的慈善活动:

before { @charity = user.charities.build(FactoryGirl.attributes_for(:charity)) }
它失败,因为您验证了未设置为“名称”的属性的存在性

如果你需要更多关于FactoryGirl的背景知识,他们的网站非常好

class Charity < ActiveRecord::Base
  attr_accessible :name, :description, :summary
  belongs_to :user

  validates :name, presence: true, length: { maximum: 40 }
  validates :summary, presence: true
  validates :description, presence: true
  validates :user_id, presence: true

  default_scope order: 'charities.created_at DESC'
end
factory :charity do
    name "Lorem ipsum"
    summary "Lorem ipsum"
    description "Lorem ipsum"
    user
end
class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation 
  has_secure_password
  has_many :charities
  has_many :microposts, dependent: :destroy
before { @charity = user.charities.build(FactoryGirl.attributes_for(:charity)) }