いくつかの部分的なレンダリングをチェックするrender_views
を使用して、いくつかのコントローラのテストを書く....RSpecのコントローラ試験:未定義のメソッド 'orders_path'
describe PromoCodeController do
render_views
describe "GET 'show" do
... a bunch of tests
it "renders 'used' partial when promo code has already been used" do
@promo_code = create(:promo_code)
@user.stub(:promo_used?).and_return(true)
get 'show', :slug => @promo_code.slug
expect(response).to render_template(:partial => 'promo_code/_used')
end
_used
部分
<article>
<p><%= @promo.description.html_safe %></p>
<p>Sorry, it appears this promo code has already been used. Please try again or contact us directly.</p>
<%= link_to "View Order", orders_path(@order), class: "box-button-black", data: { bypass: true } %>
</article>
が、休憩中にロードします:どのようにどちらかのの
undefined method `orders_path' for #<#<Class:0x007fd4069d06e8>:0x007fd401e3e518>
任意のアイデア(a)はRailsのリンクを無視し、それが (b)試験とは無関係だ (c)は、それ(と思う最後の)私がこれまで試した
すべてスタブそのリンクを認識するためのテストで何かを含めますエラーを越えることはありません。
EDIT:
orders_path
は間違っていた、それはorder_path
する必要があります。それを変更した後、私は得る:
したがって、部分は@order
を探しています。私はcontroller.instance_variable_set(:@order, create(:order))
でそれを設定しようとしましたが、部分的にはnil
として戻ってきます。
ビューに<% @order = Order.last %>
を追加して簡単にテストすると、緑が部分的に緑になります。 var @order
を_used
部分に渡す方法は今問題です。
は、あなたが追加しました:私はCURRENT_USERへの完全な順序を割り当てる方法
assign_promo_to_users_order
はトリックをしたスタブ、最終的にエラーを回避するためにいくつかのメソッドをスタブにし必要以上に
config/routes.rbにリソースを注文しますか? –
order_pathにする必要がありますか? – margo