如何测试validate_uniqueness_of?

pic*_*rdo 14 validation rspec ruby-on-rails-3

我正在打一场心理障碍.任何人都可以向我解释如何为validate_uniqueness_of编写规范测试?

Tim*_*Tim 20

或者使用Shoulda:

before do
  @user = Factory(:user)
end

subject { @user }

it { should validate_uniqueness_of(:name) }
Run Code Online (Sandbox Code Playgroud)

  • 或者期望语法,`it { is_expected.to validate_uniqueness_of :name }` (3认同)

zet*_*tic 15

class Foo < ActiveRecord::Base
  validates_uniqueness_of :name
end

# spec
describe Foo do
  it "should have a unique name" do
    Foo.create!(:name=>"Foo")
    foo = Foo.new(:name=>"Foo")
    foo.should_not be_valid
    foo.errors[:name].should include("has already been taken")
  end
end
Run Code Online (Sandbox Code Playgroud)

  • "包含"功能实际上并非由RSpec直接提供.相反,当在此上下文中使用时,RSpec只是查找名为"include?"的方法.在对象上.String类提供此方法.同样,您可以使用其他String方法,例如"should end_with('foobar')"等. (4认同)