Application Helper Spec, тестовый выход для конкретного контроллера? - PullRequest
0 голосов
/ 15 ноября 2011

Я немного не уверен, как написать тест для вспомогательного метода, вывод которого основан на заданном контроллере и запрашиваемом действии.

Учитывая следующий вспомогательный метод в моем приложениихелпер ...

module ApplicationHelper
  def body_id
    [ controller.controller_name, controller.action_name ].join("_")
  end
end

... как бы вы написали application_helper_spec, который проверяет этот метод?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Назначить или смоделировать объект контроллера. Это даст вам кое-что для проверки. (RSpec включает в себя очень хорошую библиотеку насмешек / заглушек.)

0 голосов
/ 24 мая 2013

В rspec-rails есть встроенный сахар для тестирования помощников, как упоминалось в @ marnen-laibow-koser. Но мне иногда нравится писать очень легкие тесты для моих помощников, которые не должны загружаться во всей моей среде рельсов. Таким образом, тесты могут выполняться менее чем за секунду, в отличие от нескольких секунд, необходимых для загрузки среды рельсов.

Вот пример:

require 'spec_helper_lite'
require_relative '../../app/helpers/application_helper'

describe ApplicationHelper do
  let(:helper) do
    class Helper
      include ApplicationHelper
    end
    Helper.new
  end

  it "formats an elapsed time as a number of minutes and seconds" do
    helper.elapsed_as_min_sec(90).should == "1min 30sec"
  end
end

И мой файл spec_helper_lite.rb просто выглядит так:

require 'rspec'
require 'rspec/autorun'

RSpec.configure do |config|
  config.order = "random"
end
...