0

Rspec2 と Rails3 でビュー コンポーネントの開発を始めようとしています。しかし、私は次の観察を行い、何が起こっているのか、これを修正する方法を理解していません。

私の仕様では、次のように定義しています。

  「main/index.html.erb」と記述してください
    「商品の一部に写真のURLを表示する」
      assign(:designs, [stub_model(Design, :name => "test", :photo => "photo_url")])

      与える
      render.should を含む("photo_url")
    終わり
  終わり

私が実行すると:

rspec spec/view/main_spec.rb

次のエラーが表示されます。

    1) main/index.html.erb は製品の一部に写真の URL を表示します
       失敗/エラー: レンダリング
       ActionView::テンプレート::エラー:
         nil:NilClass の未定義のメソッド「photo」
       # ./app/views/main/_design.html.erb:3:in `_app_views_main__design_html_erb__2937334847274155273_2170841960__1566661024965846011'
       # ./app/views/main/index.html.erb:25:in `_app_views_main_index_html_erb__837234277009287876_2170861440__898201527838028543'
       # ./spec/views/main_spec.rb:7:in `ブロック (2 レベル) in '

ただし、部分的にローカルの写真オブジェクトにのみ「アクセス」すると、すべてが通過します。これは:

_design.html.erb:

        --->合格
        ---> 失敗

私の見解では、次のようにパーシャルを呼び出します。

main.html.erb

      { :designs => @designs } %> 

コミュニティはどう思いますか?ご協力ありがとうございました!

4

1 に答える 1

0

問題は少し前にすでに解決されています。

「設定より規約」を念頭に置くことが重要です。この場合、spec ファイルの名前を /app フォルダー内のファイル名と正確に一致させ、末尾に _spec.rb を配置することで、spec を機能させることができます。したがって、メインのインデックス erb の正しい仕様は次のようになります。

/spec/views/main/index.erb_spec.rb
于 2011-03-15T09:24:43.577 に答える