Rails использует request.referer в тестировании

У меня есть вспомогательный метод со следующим фрагментом кода. Это часть корзины AJAX, которая отображается на нескольких страницах сайта.

module CartsHelper
  def switch_buttons
    unless URI(request.referer).path==new_order_path && !current_page?(store_path) \
      || current_page?(new_order_path)
      @checkout = true
    else
      @checkout = false
    end
  end
end

Вот частичный вид корзины

<h2> Your Cart</h2>
<table>
    <%= render(cart.line_items)%>

    <tr class ="total_line">
        <td colspan="2">Total</td>
        <td class="total_cell"><%= number_to_currency(cart.total_price)%></td>
    </tr>
</table>

<% if switch_buttons %>
    <%= button_to 'Checkout', new_order_path, method: :get %>
    <%= button_to 'Empty cart', cart, method: :delete,
        confirm: 'Are you sure?', remote: true %>
<% else %>
<%= button_to 'Cancel Order', store_path, method: :get %>    
<% end %>

URI(request.referer).path выдает ошибку неверного аргумента (ожидаемый объект URI или строка URI) во всех моих тестах. Он работает в реальном браузере. Я предполагаю, что это потому, что тесты на самом деле не проходят через URL-адреса, поэтому request.referer равен нулю? Есть ли способ настроить тест, чтобы пройти через этот код?


person jhlu87    schedule 08.11.2013    source источник


Ответы (1)