7

私はrspec仕様を持っています:

require "spec_helper"

describe ApplicationHelper do
  describe "#link_to_cart" do
    it 'should be a link to the cart' do
      helper.link_to_cart.should match /.*href="\/cart".*/
    end
  end
end

そして ApplicationHelper:

module ApplicationHelper
  def link_to_cart
    link_to "Cart", cart_path
  end
end

これはサイトにアクセスすると機能しますが、Routing が利用できないという RuntimeError で仕様が失敗します。

RuntimeError:
   In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers

Rails.application.routes.urlそのため、仕様にspec_helper-file とApplicationHelperそれ自体を含めましたが、役に立ちませんでした。

編集: spork を介してテストを実行しています。おそらくそれが原因で、問題が発生しています。

Spork で実行する場合、これらのルート ヘルパーをどのように含める必要がありますか?

4

3 に答える 3

9

ApplicationHelper にはデフォルトで URL ヘルパーが含まれていないため、includeのモジュール レベルで追加する必要があります。ApplicationHelperこのようなコード

module AppplicationHelper
  include Rails.application.routes.url_helpers

  # ...
  def link_to_cart
    link_to "Cart", cart_path
  end

 end

その後、コードが機能し、テストに合格します。

于 2013-04-17T07:50:46.357 に答える