Je dois manquer quelque chose de très simple, mais je ne trouve pas la réponse à cette question. J'ai une méthode nommée foo
à l'intérieur bar_controller
. Je veux simplement appeler cette méthode à l'intérieur d'un test fonctionnel.Comment obtenir un handle/une référence à l'objet contrôleur courant dans un test fonctionnel de rails?
Voici mon contrôleur:
class BarsController < ApplicationController
def foo
# does stuff
end
end
Voici mon test fonctionnel:
class BarsControllerTest << ActionController::TestCase
def "test foo" do
# run foo
foo
# assert stuff
end
end
Quand je lance le test que je reçois:
NameError: undefined local variable or method `foo' for #<BarsControllerTest:0x102f2eab0>
Toute la documentation sur les tests fonctionnels décrivent comment pour simuler une requête http get au bar_controller qui exécute ensuite la méthode. Mais je voudrais juste lancer la méthode sans le faire avec une requête http get ou post. Est-ce possible?
Il doit y avoir une référence à l'objet du contrôleur dans le test fonctionnel, mais j'apprends toujours le rubis et les rails, donc j'ai besoin d'aide.
ahh, je pense que je comprends maintenant. Je viens d'un arrière-plan Java. Donc, je suppose que les contrôleurs sont comme des servlets? Typiquement, les conteneurs du serveur instancient les servlets et de la même manière le serveur rails instancie les contrôleurs de sorte qu'ils doivent être accessibles via http. – Upgradingdave
le ControllerTest envelopper l'objet dans Rails Stack. Vous êtes comme vous avez fait cette demande. Après que vous avez l'objet de demande et de réponse. – shingara
Salut Shingara, j'ai pu mettre la main sur l'instance du contrôleur en utilisant @controller. Merci de votre aide. – Upgradingdave