30

タイトルは自明です。

私が試したすべてが「未定義のメソッド」につながりました。

明確にするために、私はヘルパーメソッドをテストしようとはしていません。統合テストでヘルパーメソッドを使用しようとしています。

4

6 に答える 6

29

メソッドを利用可能にするには、関連するヘルパー モジュールをテストに含める必要があります。

describe "foo" do
  include ActionView::Helpers

  it "does something with a helper method" do
    # use any helper methods here

それは本当にそれと同じくらい簡単です。

于 2013-01-18T16:07:33.910 に答える
8

この質問に遅れて来た人は、Relishサイトで回答されています。

require "spec_helper"

describe "items/search.html.haml" do
  before do
    controller.singleton_class.class_eval do
      protected
      def current_user
        FactoryGirl.build_stubbed(:merchant)
      end
      helper_method :current_user
    end
  end

  it "renders the not found message when @items is empty" do
    render

    expect(
      rendered
    ).to match("Sorry, we can't find any items matching "".")
  end
end
于 2014-01-31T22:42:40.287 に答える
4

ビュー テストでヘルパー メソッドを使用しようとしている場合は、次のようにすることができます。

before do
  view.extend MyHelper
end

describeブロック内にある必要があります。

Rails 3.2およびrspec 2.13で動作します

于 2013-08-17T01:25:55.500 に答える
1

Coderwallでの Thomas Riboulet の投稿に基づく:

spec ファイルの先頭に次を追加します。

def helper
  Helper.instance
end

class Helper
  include Singleton
  include ActionView::Helpers::NumberHelper
end

で特定のヘルパーを呼び出しますhelper.name_of_the_helper

この特定の例には、ActionView の NumberHelperが含まれています。UrlHelperが必要だったので、実行include ActionView::Helpers::UrlHelperしましたhelper.link_to

于 2014-06-26T10:15:27.367 に答える
0

https://github.com/rspec/rspec-railsでわかるように、spec/ ディレクトリ (スペックが存在する場所) を次のように初期化する必要があります。

$ rails generate rspec:install

これにより、オプションを使用して rails_helper.rb が生成されます

config.infer_spec_type_from_file_location!

最後に、「spec_helper」を要求する代わりに、helper_spec.rb で新しい rails_helper を要求します。

require 'rails_helper'
describe ApplicationHelper do
  ...
end

幸運を。

于 2014-06-24T14:45:32.530 に答える
-2

ヘルパー メソッドをテストしようとしていると仮定しています。これを行うには、spec ファイルを に配置する必要がありますspec/helpers/rspec-railsgemを使用している場合、これhelperにより、任意のヘルパー メソッドを呼び出すことができるメソッドが提供されます。

公式rspec-railsドキュメントに良い例があります:

require "spec_helper"

describe ApplicationHelper do
  describe "#page_title" do
    it "returns the default title" do
      expect(helper.page_title).to eq("RSpec is your friend")
    end
  end
end
于 2013-01-18T15:36:39.950 に答える