2

Rails3でRSpec2を学習していますが、これまでのところ順調に進んでいますが、ビューでヘルパーlink_to_unless_currentをテストする際に問題が発生しています。私がやろうとしているのは、ビュー仕様からの単純なassert_selectを使用して、リンクが次の部分ビュー(HAML)で生成されているかどうかを判別することです。

%article.post{ :id => "post-#{post.id}" }
  %header.post-title
    %h2= link_to_unless_current post.title, post
  .post-content= raw post.body

ただし、これはビュースペックであり、リクエストではなくビューのみをテストするため、ビュースペックに「現在」の意味を認識させる方法がわかりません。これはコントローラーの仕様でははるかに簡単になることはわかっていますが、ビューがその仕様で何をするかをテストする必要があり、このテストをコントローラーの仕様に移動すると、多くの混乱が生じると思います。私が求めているのは、ビューの仕様を、おそらく「前」のブロックで、現在のページが何であるかを伝える方法はありますか?また、テストの整理に関して正しいことをしていますか?このテストは、コントローラーの仕様に正しく含まれている必要がありますか?

4

1 に答える 1

2

気にしないで、私は最終的にそれを理解しました。UrlHelper.current_pageをスタブする必要がありますか?渡されたURLオプションが、現在のページとして機能させたいページと一致する場合は、trueを返します。

view.stub("current_page?".to_sym) {|options| url_for(options) == post_path(@post) }

これがRSpecテストを実行する方法であるかどうかはまだわかりませんが、いずれにしても、これは機能します。:P

于 2010-10-22T01:59:46.090 に答える