Как проверить метод ApplicationController, определенный также как вспомогательный метод? - PullRequest
43 голосов
/ 19 января 2011

В моем ApplicationController у меня есть метод, определенный как вспомогательный метод:

helper_method :some_method_here

  • Как вообще проверить ApplicationController в RSpec?
  • Как включить / вызвать этот вспомогательный метод при тестировании моих представлений / помощников?

Я использую Rails3 с RSpec2

Ответы [ 2 ]

53 голосов
/ 19 января 2011

Вы можете использовать анонимный контроллер для проверки вашего ApplicationController, как описано в документации RSpec.Также есть раздел о помощниках по тестированию .

22 голосов
/ 07 ноября 2013

Вы можете вызывать ваши вспомогательные методы для subject или @controller в спецификации.

Я искал решение этой проблемы, и анонимный контроллер не был тем, что я искал.Допустим, у вас есть контроллер, работающий на app/controllers/application_controller.rb с простым методом, который не привязан к пути REST:

class ApplicationController < ActionController:Base

  def your_helper_method
    return 'a_helpful_string'
  end

end

Затем вы можете написать свой тест в spec/controllers/application_controller_spec.rb следующим образом:

require 'spec_helper'

describe ApplicationController do

  describe "#your_helper_method" do
    it "returns a helpful string" do
      expect(subject.your_helper_method).to eq("a_helpful_string")
    end
  end

end

Хотя @controller и subject могут использоваться здесь взаимозаменяемо, я бы остановился на subject в качестве идиоматического способа RSpec.

...