NameError:Rspec中的未初始化常量

时间:2014-09-30 05:04:50

标签: ruby-on-rails rspec

所以,我正在运行Rspec,并试图找出我收到此错误的原因:

Failure/Error: 3.times {@post.votes.create(value: 1) }
 NameError:
   uninitialized constant Vote::PostId

这是我的spec / models / post_spec.rb文件:

require 'rails_helper'

describe Post do
describe "vote methods" do

before do
  @post = Post.create(title: 'post title', body: 'Post bodies must be pretty long.')
  3.times {@post.votes.create(value: 1) }
  2.times {@post.votes.create(value: -1) }
end

describe '#up_votes' do
  it "counts the number of votes with value = 1" do
    expect( @post.up_votes ).to eq(3)
  end
end

describe '#down_votes' do
  it "counts the number of votes with value = -1" do
    expect( @post.down_votes ).to eq(2)
  end
end

describe '#points' do
  it "returns the sum of all down and up votes" do
    expect( @post.points ).to eq(1) # 3 - 2
  end
end
end
end

我不明白为什么它将该行作为错误,因为它为Rspec创建数据以执行。当我试图在我的任何文件中找到“Vote :: PostId”时,找不到它。

2 个答案:

答案 0 :(得分:0)

尝试使用@ post.votes.build(value:1)

在课堂上使用Create。所以它可以是Post.create或Vote.create。

在你的情况下,它会尝试搜索Vote :: PostId,这样的类不存在。

答案 1 :(得分:0)

您可以在PostId课程中找到Vote吗?也许你试图指定一个外键并键入PostId而不是"PostId"