Rspec:我如何测试可选字段

时间:2011-12-29 11:41:01

标签: ruby-on-rails testing rspec

目前我正在学习YouTube视频Efficient Rails Test Driven Development - by Wolfram Arnold 一个练习是:

Person对象有一个可选的middle_name。

我创建了一个迁移,将中间名添加到数据库

  • rake g migration AddMiddleNameToPerson middle_name:string

我写了一个规范

它“可以有一个中间名”

但我不知道如何测试这个问题 我该如何测试可选字段

感谢您的帮助

Bulleric

2 个答案:

答案 0 :(得分:1)

要说属性是“可选的”,意味着当属性为nil时实例有效。所以:

it "does not require a middle name" do
  @person = Person.new
  @person.valid?
  @person.errors[:middle_name].should_not include("can't be blank")
end

如果你正在使用shoulda,那么这可以更简单:

describe Person do
  it { should_not validate_presence_of(:middle_name) }
end

答案 1 :(得分:0)

假设您正在使用Factor_girl,请创建两个工厂

person1 = Factory.create(:person, :first_name=> "A")  
person2 = Factory.create(:person, :first_name=> "A", :middle_name => "M")

现在,在您的测试中,显示person1person2都会保存到数据库中。
如果你没有使用factory_girl,你可以对灯具做同样的事情。