2017-08-27 5 views
2

AprèsPhoenix: Comment obtenir conn% Plug.Conn {} dans la console

iex -S mix phx.server 

Je veux faire quelques tests rapides dans le terminal IEX, mais certaines fonctions nécessitent l'% struct Plug.Conn {} comme argument, par exemple, je voulais obtenir le résultat de l'expression:

MyAppWeb.Router.Helpers.confirmation_url(%Plug.Conn{}, :edit, "12345") 

Mais j'ai erreur:

Phoenix endpoint not found in %{} 

est-il un moyen simple de Getti ng conn struct dans la console?

Répondre

5

Les fonctions d'assistance de routeur acceptent un module conn ou un module de point de terminaison comme premier argument. Vous pouvez passer le module de point final de votre application lorsque vous souhaitez générer une URL sans conn:

MyAppWeb.Router.Helpers.confirmation_url(MyAppWeb.Endpoint, :edit, "12345") 

Edit: Si vous voulez créer un conn mannequin qui travaille avec des aides du routeur, il semble que il suffit de mettre une valeur %{phoenix_endpoint: MyAppWeb.Endpoint} dans conn.private au Phoenix 1.3:

conn = %Plug.Conn{private: %{phoenix_endpoint: MyAppWeb.Endpoint}} 
MyAppWeb.Router.Helpers.confirmation_url(conn, :edit, "12345") 
+0

@ Dogbert: Merci! Cela a aidé dans ce cas particulier, mais pour d'autres fonctions cela pourrait être insuffisant, pouvons-nous construire facilement des connexions valables? – AndreyKo

+0

Je n'ai trouvé aucune fonction remplissant 'phoenix_endpoint' pour vous automatiquement. J'ai explicitement mis mon module Endpoint dans un connet comme celui-ci et cela fonctionne avec les fonctions d'assistance du routeur: '% Plug.Conn {private:% {phoenix_endpoint: MonApp.Endpoint}} |> MyApp.Router.Helpers.page_url (: index) '. – Dogbert

+0

Cela a bien fonctionné, pouvez-vous l'ajouter à votre réponse pour que je l'accepte? – AndreyKo

-1

Pourquoi passer du temps avec des essais sur la console. Il suffit d'écrire un test et d'utiliser le 'ConnCase' qui vous donne la structure de connexion dans vos tests gratuitement. Au cours du développement, vous pouvez également utiliser le package "test watch" qui réexécutera vos tests à chaque changement de fichier.

Dès que vous passez à TDD comme plus de temps vous permettra d'économiser des problèmes comme celui-ci

+1

Dans ce cas particulier, je voulais juste trouver l'URL générée par la bibliothèque de tiers, je pense que dans certains cas, des tests rapides dans la console peuvent être utiles. – AndreyKo

3

Les aides de test ConnCase utilisent Phoenix.ConnTest.build_conn() pour démarrer une struct de connexion pour les tests de contrôleur.

Vous pouvez trouver la fonction here et soit l'utiliser directement ou suivre sa mise en œuvre et l'ajuster comme vous le souhaitez.