2011-12-03 4 views
1

다음에 대한 Rspec 테스트를 작성하려면 어떻게해야합니까? TDD를 사용하면 다음 코드를 통과해야하는 테스트를 작성할 수 있기를 원합니다.레일즈에서 email_uniqueness_index에 대한 Rspec 테스트 생성

class AddEmailUniquenessIndex < ActiveRecord::Migration 
    def up 
    add_index :users, :email, :unqiue => true 
    end 

    def down 
    remove_index :users, :email 
    end 
end 

답변

3

테스트 중에 동일한 전자 메일 주소로 두 명의 사용자를 만들어보십시오. 두 번째 이메일은 유효하지 않아야합니다. 이런 식으로 뭔가 : 나는 위의 예에서 factory_girlvalid_attribute 보석을 사용하고

it "prevents duplicates" do 
    user1 = create(:user, email: '[email protected]') 
    user2 = build(:user, email: '[email protected]') 

    user1.should be_valid 
    user2.should_not have_valid(:email) 
end 

참고. 또한 모델에 validates :email, uniqueness: true이 있다고 가정합니다.