web-dev-qa-db-fra.com

Comment tester la méthode ApplicationController définie également comme méthode d'assistance?

Dans mon ApplicationController, j'ai une méthode définie comme une méthode d'assistance:

helper_method :some_method_here

  • Comment puis-je tester ApplicationController dans RSpec?
  • Comment inclure/appeler cette méthode d'assistance lors du test de mes vues/aides?

j'utilise Rails3 avec RSpec2

44
Mirko

Vous pouvez utiliser un contrôleur anonyme pour tester votre ApplicationController, comme décrit dans la documentation RSpec. Il y a aussi une section sur test des aides .

54
Jimmy Cuadra

Vous pouvez appeler vos méthodes d'assistance sur subject ou @controller dans la spécification.

Je cherchais une solution à ce problème et le contrôleur anonyme n'était pas ce que je cherchais. Disons que vous avez un contrôleur vivant à app/controllers/application_controller.rb avec une méthode simple qui n'est pas liée à un chemin REST:

class ApplicationController < ActionController:Base

  def your_helper_method
    return 'a_helpful_string'
  end

end

Ensuite, vous pouvez écrire votre test en spec/controllers/application_controller_spec.rb comme suit:

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

Tandis que @controller et subject peuvent être utilisés interchangeables ici, je choisirais subject comme son idiomatique RSpec pour l'instant.

22
Konrad Reiche