RSpec - как проверить значение по умолчанию для атрибута с помощью обратного вызова - PullRequest
1 голос
/ 13 января 2012

Вот мой тест:

require 'spec_helper'

describe League do

    it 'should default weekly to false' do
      league = Factory.create(:league, :weekly => nil)
      league.weekly.should == false
    end
  end

end

А вот моя модель:

class League < ActiveRecord::Base

  validates :weekly, :inclusion => { :in => [true, false] }

  before_create :default_values

  protected

  def default_values
    self.weekly ||= false
  end

end

Когда я запускаю свой тест, я получаю следующее сообщение об ошибке:

 Failure/Error: league = Factory.create(:league, :weekly => nil)
 ActiveRecord::RecordInvalid:
   Validation failed: Weekly is not included in the list

Я попробовал несколько разных подходов к созданию рекорда лиги и запуску обратного вызова, но мне не повезло.Есть ли что-то, чего мне не хватает в тестировании обратных вызовов с использованием RSpec?

1 Ответ

1 голос
/ 13 января 2012

Я полагаю, что то, что вы говорите, перед созданием устанавливает еженедельно на ложь, затем на самом деле устанавливает еженедельно на ноль, перезаписывая ложь.

Просто сделай

require 'spec_helper'

describe League do

    it 'should default weekly to false' do
      league = Factory.create(:league)  # <= this line changed
      league.weekly.should == false
    end
  end

end

в вашем тесте. Нет необходимости явно устанавливать ноль.

...