3

私の見解では、任意の HTML をブロックとして受け取るヘルパーを使用しています。

<% some_block_helper do %>
  Some arbitrary HTML and ERB variables here.
  More HTML here.
<% end %>

私のヘルパーは、渡された HTML のブロックをビューにレンダリングする前に、さまざまなことを行います (Markdown やその他の書式設定)。rSpec でのヘルパー呼び出しの結果をテストする最もクリーンな方法があれば教えてください。私は、ERB のプライベート メソッドをいじる例をいくつか見つけましたが、それは少し脆弱で読みにくいようです。

4

3 に答える 3

7

ジェームズが言ったことに少し追加すると、次のようなものがうまくいくはずです。

describe SomeHelper do
  it 'should do something' do
    helper.some_block_helper { the_block_code }.should XXXX
  end
end
于 2008-10-30T04:43:15.260 に答える
1
  1. 機能テストの場合は、通常のビュー仕様を記述して結果をテストします。
  2. ヘルパーの単体テストを行うには、任意のhtml入力文字列をヘルパーに直接渡します。

私が見逃している他の問題があれば、コメントしてください。

于 2008-10-29T23:19:01.933 に答える
1

キャメロンの答えを拡張した別の例を次に示します

describe SomeHelper do
  it 'should do something' do
    content = lambda { "blah" }                                
    result  = helper.some_block_helper(&content)

    result.should include("blah")
    result.should XXX
  end
end
于 2010-11-30T08:18:34.827 に答える