2012-01-13 50 views
1

的屬性測試默認值這裏是我的測試:RSpec的 - 如何利用回調

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測試回調的問題?

+0

驗證在before_create被觸發前在模型上運行,這就是爲什麼我得到錯誤。我決定走這條路線:http://stackoverflow.com/questions/6715468/attr-accessor-default-values/8775320#8775320。現在所有的作品。 – keruilin 2012-01-13 02:53:55

回答

1

我認爲你所說的是,在創建之前,將每週設置爲false,然後創建每週實際設置爲零,覆蓋假。

只是做

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 

在您的測試。無需明確設置nil。

+0

隨着新的RSpec3你應該期望(league.weekly)。是假的 – moeabdol 2017-06-05 10:33:42