Salut J'ai récemment hérité d'un projet dans lequel l'ancien dev n'était pas familier avec les rails, et a décidé de mettre beaucoup de logique importante dans les aides de vue.Comment importer les assistants Rails dans les tests fonctionnels
class ApplicationController < ActionController::Base
protect_from_forgery
include SessionsHelper
include BannersHelper
include UsersHelper
include EventsHelper
end
Gestion de session spécifique. C'est correct et je travaille avec l'application mais j'ai des problèmes pour écrire des tests.
Un exemple spécifique. Certaines des actions font un before_filter
pour voir si un current_user
est un admin. Cette current_user
est normalement fixé par une méthode sessions_helper
partagée dans tous nos contrôleurs Ainsi, afin de tester correctement nos contrôleurs que je dois être en mesure d'utiliser cette méthode current_user
J'ai essayé:
require 'test_helper'
require File.expand_path('../../../app/helpers/sessions_helper.rb', __FILE__)
class AppsControllerTest < ActionController::TestCase
setup do
@app = apps(:one)
current_user = users(:one)
end
test "should create app" do
assert_difference('App.count') do
post :create, :app => @app.attributes
end
end
la require trouve le session_helper.rb
correct mais sans la magie Rails il est accessible de la même manière avec la AppsControllerTest
Comment puis-je modifions cette configuration fou pour tester?
faire 'include SessionsHelper' dans la classe' AppsControllerTest' n'aide pas? Si vous allez développer activement cette application, je vous recommande fortement de refactoriser le code écrit par eux, cela n'a pas de sens, vous gagnerez du temps. On dirait que vous essayez simplement de le faire fonctionner et n'avez pas le temps d'investir dans cela. – Jeremy
Il semble donc que les helpers sont inclus car le contrôleur App appelle une méthode dans user_helper qui déclenche alors une erreur dans l'hôte sessions_helper. Donc, il semble qu'ils sont inclus, mais ne peuvent pas parler les uns avec les autres.Z – kevzettler