2011-03-22 50 views
0

我是rspec測試中的新手。我有兩個關於Rails中rspec測試的問題。關於Rails中Rspec測試的新手問題

如果我有一個「汽車」模型,它是一個ActiveRecord的

class Car < ActiveRecord::Base 
    ... 
    def get_color 
    .. 
    end 
end 

問題1:在rspec的測試(我有所有的寶石和配置準備好),有什麼區別

before(:each) do 
    @my_car=Factory.create(:car, params) 
end 

之間

(我的意思是有什麼區別裏面 rspec測試範圍,不要他們在rspec測試內有相同的效果?不僅內部前(:每個)做語句,但也形容......做語句)

問題2:正如你在我的模型中看到,有一個實例函數get_color,我可以通過以下方式在我的rspec測試中調用這個實例函數嗎?

@my_car=Factory.create(:car, params) 
@my_car.get_color #Can I call instance method in rspec test? 

我已經試過這個,但它似乎實例方法不返回rspec測試中預期的結果。但是在rspec測試代碼之外工作,但我不確定。

任何人都可以讓我清楚這兩個問題嗎?

+1

更好地做2個問題,而不是隻有一個 – shingara 2011-03-22 08:44:54

回答

3

問題1:

2聲明,而不是使用工廠的女孩沒有區別。使用Factory女孩,您可以在創建對象期間擁有一些默認行爲。在第二種情況下,你需要自己做。

問題2:

您需要測試您的方法。如果例如返回0,你可以添加:

it 'should return 0' do 
    @my_car.get_color.should == 0 
end 

我們能不能更具體更代碼

0

Q1:這是幾乎相同的,儘管工廠更加靈活,我喜歡他們。 Q2:你可以執行@ my_car.get_color,但只是執行它並不意味着什麼。您或者需要檢查它是否滿足條件(可能應該使用)或者將它存根以返回所需的值,而不實際執行(一種常見的rspec練習)。

+0

從我+1使用工廠,他們往往是更幹 – 2011-05-04 18:29:05