brief.rb
# encoding: utf-8
class Brief < ActiveRecord::Base
belongs_to :project
validates_numericality_of :duration, :only_integer => true, :less_than_or_equal_to => 15, :greater_than_or_equal_to => 5, :unless => Proc.new{ |b| b.project.project_type.express_project }
end
brief_spec.rb
require 'spec_helper'
describe Brief do
before(:all) do
@project =Factory(:project)
@brief=Factory.build(:brief,:project => @project)
end
context 'non-specific tests' do
subject { @brief }
it { should belong_to(:project) }
it { should validate_presence_of(:project}
end
end
这些是我的简短模型和简短的spec文件。但是我没弄清楚如何测试validates_numericality_of 除非部分。可以之前有人尝试过吗?
答案 0 :(得分:1)
使用上下文并测试不同的条件
e.g。
context "when duration is more than 5 but less than 15" do
before do
subject.duration = 10
end
it { should validate_presence_of(:project) }
end
context "when duration is more than 15" do
before do
subject.duration = 20
end
it { should_not validate_presence_of(:project) }
end