タイトルは自明です。
私が試したすべてが「未定義のメソッド」につながりました。
明確にするために、私はヘルパーメソッドをテストしようとはしていません。統合テストでヘルパーメソッドを使用しようとしています。
タイトルは自明です。
私が試したすべてが「未定義のメソッド」につながりました。
明確にするために、私はヘルパーメソッドをテストしようとはしていません。統合テストでヘルパーメソッドを使用しようとしています。
メソッドを利用可能にするには、関連するヘルパー モジュールをテストに含める必要があります。
describe "foo" do
include ActionView::Helpers
it "does something with a helper method" do
# use any helper methods here
それは本当にそれと同じくらい簡単です。
この質問に遅れて来た人は、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
ビュー テストでヘルパー メソッドを使用しようとしている場合は、次のようにすることができます。
before do
view.extend MyHelper
end
describe
ブロック内にある必要があります。
Rails 3.2およびrspec 2.13で動作します
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
。
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
幸運を。
ヘルパー メソッドをテストしようとしていると仮定しています。これを行うには、spec ファイルを に配置する必要がありますspec/helpers/
。rspec-rails
gemを使用している場合、これ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