【发布时间】:2021-12-16 23:50:00
【问题描述】:
为什么这个测试通过了?我不明白问题出在哪里:Factory bot 还是 Rails?
型号:
class Vote < ApplicationRecord
belongs_to :user
belongs_to :votable, polymorphic: true
validate :self_like
private
def self_like
errors.add(:user, 'self-like') if votable.author_id == user_id
end
end
工厂:
FactoryBot.define do
factory :vote do
value { 1 }
user
association :votable, factory: :question
end
end
如果你输出被测试的对象(pp 投票),那么所有的属性都将为 nil。在这种情况下,可以获得关联对象(pp vote.votable)
describe 'validate :self_like' do
let!(:vote) { build :vote }
it "self-like" do
vote.valid?
expect(vote.errors[:user]).to include('self-like')
end
end
【问题讨论】:
-
votable.author_id 和 user_id 是否为零?
标签: ruby-on-rails rspec