设置控制器进行测试

时间:2013-03-11 19:04:02

标签: rubymotion specifications

我正在尝试使用培根在rubymotion中为我的控制器编写一个功能测试。

在我的控制器中,我有一些代码填充了一些数据:

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

当我将控制器推送到导航控制器时,我正在设置chant变量。

这在应用程序中运行良好,但是当我尝试在规范的前块中执行此操作时它不起作用,因为viewWillAppear在块之前被调用并且它以{{1}失败}。

有办法处理这种情况吗?是否有其他方法来填充数据或使用与NoMethodError: undefined method 'song_text' for nil:NilClass不同的方法?

2 个答案:

答案 0 :(得分:3)

通过调用super方法中的viewWillAppear方法,我遇到了类似的问题

答案 1 :(得分: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