2013-03-11 5 views
0

Я пытаюсь написать функциональный тест для моего контроллера в рубимоте, используя бекон.настройка контроллера для теста

в моем контроллере у меня есть некоторый код, который заполнит некоторые данные:

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

я ставлю переменную chant когда я нажать, что контроллер к навигации-контроллеру.

это прекрасно работает в приложении, но когда я пытаюсь сделать это в переднем блоке спецификации, он не работает, потому что viewWillAppear вызывается перед блоком, и он не работает с NoMethodError: undefined method 'song_text' for nil:NilClass.

есть ли способ справиться с этой ситуацией? есть ли другой способ для заполнения данных или использовать другой метод, чем viewWillAppear?

+0

звучит как бекон или RubyMotion ошибка. Перед тем, как будет отображаться контроллер, должен быть вызван перед блоком. –

+0

Я тоже так думал! – phoet

+0

это спецификация, если вы хотите посмотреть: https://github.com/phoet/chant/blob/master/spec/controllers/chant_controller_spec.rb – phoet

ответ

0

поддержка RubyMotion ответил на мой билет поддержки с указанием, что это ожидаемое поведение контроллеров в беконе.

Я работал вокруг всего на гася моим класс испытываемого в беконе спецификации следующим образом:

# 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

Я испытать подобную проблему, которая была решена путем вызова метода super в viewWillAppear методе

Смежные вопросы