[RUBY] [RSpec] Lorsque vous souhaitez utiliser la variable d'instance du contrôleur dans le test [attribuer n'est pas recommandé]

Depuis Rails 5, assigns (également assert_template) est obsolète. Pour le moment, le test du contrôleur lui-même n'est pas obsolète, donc les assigns peuvent être utilisés, mais vous devez installer un gem appelé rails-controller-testing.

Cependant, il ne s'agit que d'un remède pour les projets existants et il n'est pas recommandé d'utiliser des attributions dans de nouveaux projets. (Je ne sais pas pourquoi c'est si fou. S'il vous plaît laissez-moi savoir si vous savez: priez :)

au lieu de,

controller.instance_variable_get("@hoge")

Vous pouvez obtenir la variable d'instance en utilisant.

Exemple de code

J'ai extrait une partie du test du processus de réinitialisation du mot de passe que j'ai écrit récemment.

password_resets_request_spec.rb


RSpec.describe 'PasswordResets', type: :request do
  let(:user) { create(:user) }

 describe 'Accès à l'écran d'édition de réinitialisation du mot de passe' do
    context 'Lorsque l'adresse e-mail est incorrecte' do
      it 'l'utilisateur doit être redirigé vers la page de réinitialisation du mot de passe' do
        post password_resets_path, params: { password_reset: { email: user.email } }
        user = controller.instance_variable_get('@user')
        get edit_password_reset_path(user.reset_token, email: '')
        expect(flash[:danger]).to be_truthy
        follow_redirect!
        expect(request.fullpath).to eq '/password_resets/new'
      end
    end

Dans le code ci-dessus, je voulais accéder à l'attribut reset_token, donc j'ai l'impression d'obtenir une variable d'instance appelée @user pour l'action de création.

Merci d'avoir lu jusqu'au bout!

Désespéré de déployer des applications développées personnellement ces derniers temps, c'est un peu court: priez: Une fois le déploiement terminé, j'écrirai à nouveau un article solide! !! Je vous remercie.

Recommended Posts

[RSpec] Lorsque vous souhaitez utiliser la variable d'instance du contrôleur dans le test [attribuer n'est pas recommandé]
ProxyFactory est pratique lorsque vous souhaitez tester AOP avec Spring!
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Vous pouvez ne pas vouloir utiliser la méthode remove sur ArrayList très souvent
Delicate est pratique à utiliser lorsque vous souhaitez réutiliser des pièces
Utilisez JLine lorsque vous souhaitez gérer les frappes sur la console caractère par caractère en Java
[Swift] Lorsque vous voulez savoir si le nombre de caractères dans String correspond à un certain nombre ...
Que faire lorsque vous souhaitez connaître la position source où la méthode est définie dans binding.pry
Si vous souhaitez simuler une méthode dans RSpec, vous devez utiliser la méthode allow pour mock et la méthode singleton.
Un mémo lorsque vous souhaitez effacer la partie horaire de l'agenda
Comment contraindre l'action de la destination de transition lorsqu'elle n'est pas connectée
Je veux que vous utilisiez Enum # name () pour la clé de SharedPreference
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal
Si vous n'appelez pas shutdownNow lorsque le transfert est terminé avec le SDK Java d'AWS S3, le thread continuera à rester.
Lorsque vous souhaitez lier InputStream dans JDBI3
[Swift] Utilisez nonzeroBitCount lorsque vous voulez popcnt dans Swift
Comment définir quand "Le constructeur Empty () n'est pas visible" se produit dans junit
Est-il courant de ne pas écrire la balise de fermeture de la balise <P> dans Javadoc?
Lorsque le projet n'est pas affiché dans eclipse
Que faire lorsque «Impossible de trouver» dans l’une des sources apparaît dans l’environnement de développement avec Docker × Rails × RSpec
Lors du changement du contrôleur de Spring Web MVC en kotlin, @Autowired Le composant spécifié n'est pas injecté et devient nul
Je veux que vous racontiez que l'erreur a été résolue lorsque vous avez poignardé le chargeur dans le coin de la tête
[rails] Option After utile lorsque vous souhaitez modifier l'ordre des colonnes DB
Pour ceux qui souhaitent utiliser MySQL pour la base de données dans la construction de l'environnement de Rails6 ~.
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Code à utiliser lorsque vous souhaitez traiter Json en Java avec uniquement des bibliothèques standard
Quand le survol d'Eclipse est difficile à voir
Lorsque vous souhaitez remplacer dynamiquement l'annotation dans Java 8
Comment résoudre le problème lorsque la valeur n'est pas envoyée lorsque le formulaire est désactivé dans les rails et envoyé
Lors de la réécriture du CMD de l'image docker de Pod dans le manifeste de k8s, n'utilisez pas la commande
Lorsque vous souhaitez refléter les informations de la branche principale dans la branche actuelle sur laquelle vous travaillez actuellement
L'idée de couper quand l'erreur n'est pas résolue
[Rails] Lorsque le changement de disposition du dispositif n'est pas reflété
Une collection de modèles dont vous voulez être conscient pour ne pas compliquer le code
Comparaison des chaînes de version lorsque vous souhaitez brancher le traitement entre deux versions (implémentation Java)
Un mémorandum lorsque vous souhaitez voir les données acquises par Jena & SPARQL pour chaque variable.
Comment écrire lorsque vous voulez gérer un "tableau de chaînes en langage C" comme argv [] dans Ruby-FFI
Si vous souhaitez simplement exécuter vos conteneurs dans le cloud, Azure Container Instances est facile
Je veux rendre le cadre de la zone de texte rouge lorsqu'il y a une erreur de saisie
Comment résoudre le problème de non-sortie du journal de connexion lorsque l'application Web est arrêtée
Est-il facile à utiliser pour l'utilisateur lors de la mise en œuvre de fonctions à usage général? Soyons conscients de
Je veux connaître la méthode du contrôleur où l'exception a été levée dans le ExceptionHandler de Spring Boot
[Rails / Routing] Comment faire référence au contrôleur dans votre propre répertoire
Que faire lorsque les modifications du servlet ne sont pas reflétées
Si vous souhaitez inclure la classe parente dans @builder de Lombok
Vous voulez savoir ce que Ruby n est la puissance de 2? (Jugement de puissance de 2)
Comment afficher la valeur lorsqu'il y a un tableau dans le tableau
La milliseconde définie dans /lib/calendars.properties de Java jre est UTC
Je veux changer la valeur de l'attribut dans Selenium of Ruby