2015-07-20 6 views
0

Я бы хотел проверить свои модели, но вся информация, которую я мог найти, кажется устаревшей. Моя цель - проверить каждую отдельную проверку. Моя модель:Rails - FactoryGirl - тестовые модели [валидация]

class Author < ActiveRecord::Base 
    has_and_belongs_to_many :books 
    before_save :capitalize_names 
    validates :name, :surname, presence: true, length: { minimum: 3 }, 
    format: { with: /[a-zA-Z]/ } 


    private 
    def capitalize_names 
    self.name.capitalize! 
    self.surname.capitalize! 
    end 
end 

и мой factorygirl определить:

FactoryGirl.define do 
    factory :author do |f| 
    f.name { Faker::Name.first_name } 
    f.surname { Faker::Name.last_name } 
    end 
end 

Так что теперь, я хочу, чтобы проверить, является ли имя не короче 3-х символов.

Мой контекст:

context 'when first name is too short' do 
    it { expect(FactoryGirl.build(:author, name: 'Le')).to 
     be_falsey } 
    end 

Я знаю, что это недопустимо, так как из [FactoryGirl.build (: автор, название: 'Le')] возвращает хеш вместо логического значения. Итак, как мне его проверить? Какой помощник я должен использовать?

+0

Вы можете оставить официальный ответ самостоятельно, а затем выбрать этот вопрос ответил, так это легко увидеть, для других ваших вопросов был дан ответ :) – sourcx

+0

Спасибо за подсказку :) Я вы только что сделали это – mike927

ответ

1

[решаемые]

Использование be_valid вместо be_falsey. Теперь он должен выглядеть следующим образом:

context 'when first name is too short' do 
    it { expect(FactoryGirl.build(:author, name: 'Le')).not_to 
    be_valid } 
    end