2013-03-11 141 views
0

我試圖用培根在rubymotion中爲我的控制器寫一個功能測試。設置控制器測試

在我的控制器我有一些代碼,填充一些數據:

def viewWillAppear(animated) 
    song_text.text = chant.song_text 
    ... 
end 

我設置的chant變量時我該控制器推到導航控制器。

能正常工作的應用程序,但是當我嘗試這樣做,在一個前塊規範的這是行不通的,因爲viewWillAppear獲取塊之前調用,它失敗了NoMethodError: undefined method 'song_text' for nil:NilClass

有沒有辦法處理這種情況?有沒有其他方式來填充數據或使用與viewWillAppear不同的方法?

+0

聽起來像燻肉或RubyMotion錯誤。在顯示控制器之前應該調用before塊。 – 2013-03-12 04:02:32

+0

我也這麼認爲! – phoet 2013-03-12 07:54:41

+0

這是規範,如果你想看看:https://github.com/phoet/chant/blob/master/spec/controllers/chant_controller_spec.rb – phoet 2013-03-12 07:55:52

回答

0

的RubyMotion支持回答我的支持票指示super方法解決了類似的問題,這是培根控制器的預期行爲。

我工作圍繞整個事情由被測磕碰我班在燻肉規格如下所示:

# spec/chant_controller_spec.rb 
class ChantControllerStub < ChantController 
    def chant 
    @chant ||= create_chant 
    end 
end 

describe "ChantController" do 
    tests ChantControllerStub 

    it "displays a chant" do 
    view('verse').should.not == nil 
    end 
end 
3

我有經驗,這是通過調用viewWillAppear方法