【发布时间】:2015-10-07 13:59:08
【问题描述】:
我设置了一个自定义验证,用于在提交评论之前检查用户是否为专辑投票。验证在客户端运行良好,但在运行我的 Rspec 测试时,我似乎遇到了一些问题。
验证使用 Acts As Votable gem 的 voted_for? 方法。不幸的是,这就是事情变得糟糕的地方。对于我的非自定义验证(顺便说一句,它经常工作)我收到这样的错误:
3) Review validations should ensure body has a length of at least 40
Failure/Error: it { should validate_length_of(:body).is_at_least(40) }
NoMethodError:
undefined method `voted_for' for nil:NilClass
我需要做什么才能识别此方法?
审查模型
class Review < ActiveRecord::Base
belongs_to :album
belongs_to :owner, class_name: "User", foreign_key: :user_id
validates :body, presence: true, length: { minimum: 40 }
def album_vote
if !owner.voted_for?(album)
errors.add(:review, "requires an album vote before submitting")
end
end
end
审核工厂
FactoryGirl.define do
factory :review do
body { Faker::Lorem.paragraph(2) }
album
association :owner, factory: :user
end
end
【问题讨论】:
标签: ruby-on-rails validation rspec tdd factory-bot