Название самоочевидно.
Все, что я попробовал, привело к "методу undefined".
Чтобы уточнить, я не пытаюсь проверить вспомогательный метод. Я пытаюсь использовать вспомогательный метод в тесте интеграции.
Название самоочевидно.
Все, что я попробовал, привело к "методу undefined".
Чтобы уточнить, я не пытаюсь проверить вспомогательный метод. Я пытаюсь использовать вспомогательный метод в тесте интеграции.
Вам просто нужно включить соответствующий вспомогательный модуль в свой тест, чтобы сделать доступные методы:
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
.
Он работает для меня на рельсах 3.2 и rspec 2.13
На основе Сообщение Томаса Рибуле на Coderwall:
В начале вашего файла спецификации добавьте следующее:
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!
и, наконец, потребует новый rails_helper в helper_spec.rb вместо того, чтобы требовать "spec_helper".
require 'rails_helper'
describe ApplicationHelper do
...
end
Удачи.
Я предполагаю, что вы пытаетесь проверить вспомогательный метод. Для этого вам нужно поместить ваш файл spec в spec/helpers/
. Учитывая, что вы используете драгоценный камень rspec-rails
, это предоставит вам метод 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