ruby-on-rails – Rspec测试中nil类的未定义方法
发布时间:2020-12-17 02:39:34 所属栏目:百科 来源:网络整理
导读:所以,我有一个Game类可以有很多版本,每个版本可以有很多GameStats.我有我的每个版本belongs_to一个游戏,每个GameStat属于一个版本和has_one游戏通过版本.在我的测试中,当我测试对游戏和版本对象的响应以及对象相等时,这些测试通过了,但是当我尝试通过调用@ s
所以,我有一个Game类可以有很多版本,每个版本可以有很多GameStats.我有我的每个版本belongs_to一个游戏,每个GameStat属于一个版本和has_one游戏通过版本.在我的测试中,当我测试对游戏和版本对象的响应以及对象相等时,这些测试通过了,但是当我尝试通过调用@ stats.game来引用该对象时,我得到一个#< NoMethodError:undefined方法'游戏'为零:NilClass>.我在这里很困惑,因为我可以在rails控制台中执行@ stats.game,但在测试中它不存在.
相关的型号代码如下: class Game < ActiveRecord::Base has_many :versions,dependent: :destroy has_many :platforms,through: :versions has_many :game_stats,class_name: 'GameStats',through: :versions validates :name,presence: true end class GameStats < ActiveRecord::Base belongs_to :version has_one :game,through: :version validates :version_id,presence: true end class Version < ActiveRecord::Base belongs_to :game belongs_to :platform has_many :game_stats,class_name: 'GameStats' validates :game_id,presence: true validates :platform_id,presence: true end 我的RSpec文件(相关部分)是这样的: describe GameStats do let!(:game) { FactoryGirl.create(:game) } let!(:platform) { FactoryGirl.create(:platform) } let!(:version) { FactoryGirl.create(:version,game: game,platform: platform) } before do @stats = FactoryGirl.create(:game_stats,version: version) end subject { @stats } .... it { should respond_to(:version) } it { should respond_to(:game) } its(:version) { should eq version } its(:game) { should eq game } ... describe "2 different days stats should have the same game" do before do @stats.save @another_stats = FactoryGirl.create(:game_daily_stats,version: version,datestamp: Date.yesterday) @another_stats.save end expect(@another_stats.game).to eq @stats.game end end 有谁知道为什么会发生这种错误? 我在Rails 4.0.0上,使用Ruby 2.0.0-p247,使用RSpec-rails 2.14.0,factory_girl_rails 4.2.1. 解决方法
更换:
expect(@another_stats.game).to eq @stats.game 有: it 'description' do expect(@another_stats.game).to eq @stats.game end 顺便说一下,使用let而不是实例变量 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- POS VB
- nosql – 查询产品目录RavenDB存储,以便在任意产品集合上进
- Flex 学习笔记之一:Flex 简介
- c# – ListBox ScrollIntoView当使用GroupViewSource与Grou
- WebSockets(或AJAX长轮询等)可以在与原始HTTP请求不同的端口
- c# – 如何使用PostSharp AOP获取当前NHibernate会话以使用
- Flex程序中的注释对编译后的swf文件大小无影响
- “cvc-complex-type.2.4.a: Invalid content was found sta
- Oracle主键:NUMBER与NUMBER(7,0)
- ruby – 如何在OSX上卸载rbenv?