所以,我正在运行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”时,找不到它。
答案 0 :(得分:0)
尝试使用@ post.votes.build(value:1)
在课堂上使用Create。所以它可以是Post.create或Vote.create。
在你的情况下,它会尝试搜索Vote :: PostId,这样的类不存在。
答案 1 :(得分:0)
您可以在PostId
课程中找到Vote
吗?也许你试图指定一个外键并键入PostId
而不是"PostId"
?