0

ベーコンを使ってルビーモーションでコントローラーの機能テストを書こうとしています。

私のコントローラーには、いくつかのデータを取り込むコードがあります。

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

chantそのコントローラーをナビゲーションコントローラーにプッシュするときに変数を設定しています。

これはアプリでは正常に機能しますが、仕様のブロック前でこれを実行しようとすると、viewWillAppearブロックの前に呼び出されて失敗するため、機能しませんNoMethodError: undefined method 'song_text' for nil:NilClass

この状況に対処する方法はありますか?データを入力したり、別の方法を使用したりする他の方法はありviewWillAppearますか?

4

2 に答える 2

3

superメソッド内のviewWillAppearメソッドを呼び出すことで解決された同様の問題が発生しました

于 2013-03-12T15:41:10.653 に答える
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
于 2013-04-05T20:32:00.217 に答える