0

コントローラーからのインスタンス変数に応じて、異なるパーシャルをレンダリングしたいとします。次のようなヘルパー メソッドにロジックを入れます。

def display_my_partial(foo)
  foo == bar ? render(partial_x) : render(partial_y)
end

そして私が呼び出すビューで(Slimを使用して):

= display_my_partial(@foo)

私のテストはどのように見えるべきですか?私は次のようなものを試しました:

expect(display_my_partial(foo)).to render(partial: 'partial_x')

しかし得た:

NoMethodError:
       undefined method `matches?' for #<ActiveSupport::SafeBuffer:0x007ffb490aba80>

私のパーシャルはネストされた名前空間にあるため、私の例はもう少し複雑です。render 'partial_x'仕様で動作させるには、usind vsだけで少し実験する必要がrender partial: 'namespace/model/partial_x'ありましたが、最終的に上記のエラーが発生しました。

では、これをどのようにテストしますか?

4

1 に答える 1

1

どこでテストしていますか?render_views が呼び出されていることを確認してください。

いずれにせよ、それが部分的にレンダリングされていることを本当に気にしますか? ファイル名が変更された場合、または代わりに html ヘルパーを使用して実装を変更することにした場合はどうでしょう。これは出力には関係ありません。代わりに、個人的に出力をアサートします。出力の複雑さに応じて、ビュー テストまたは単純な単体テストで実行できます。

HTH、

于 2014-11-18T11:43:53.347 に答える