2015-08-20 1 views
1

Utilisation de WebMock pour remplacer un fournisseur Oauth 2. Le problème est que je veux utiliser Rack Test. Rack Test ne fonctionne qu'avec une instance de l'application et ne connaît pas les hôtes HTTP externes comme le fournisseur Oauth 2.Est-il possible d'utiliser WebMock avec Rack Test?

WebMock.stub_request(:get, "https://test.oauth-provider.com/oauth/authorize") ne fonctionnera pas car la demande est envoyée à l'application en tant que /oauth/authorize.

Y a-t-il un moyen pour WebMock de répondre aux demandes locales? Par exemple:

WebMock.stub_request(:get, "/oauth/authorize") 

Répondre

1

Il me semble, vous êtes un peu confus au sujet de ce que vous testez, et établit la frontière claire, où votre système est (que l'on appelle SUT, système sous test) et où sont les parties externes.

Il est très important depuis:

  • SUT est ce que vous allez interagir avec pendant vos tests (à savoir l'application de rack);
  • parties externes doivent être moquaient (services Web externes, et ... qui peuvent être surprenants, d'autres bibliothèques, comme OAuth, pilotes SQL, etc.)

Cela signifie que si vous essayez de Utilisez WebMock pour n'importe quelle partie de votre application (ce qui ressemble à ce que vous faites en raison de la question de se moquer d'une URL relative), vous faites clairement quelque chose de mal.

Plus près de votre tâche, si je vous, je:

  1. Choisissez une bonne bibliothèque OAuth bien testé et déposez-le dans l'application.
  2. Quand il s'agit de tester, utilisez simplement mes propres objets stub simples à la place des véritables classes d'implémentation OAuth. Cela détournera l'attention de tester le comportement de mon service. Vérification de la bibliothèque OAuth est vraiment un double travail, car il est déjà couvert par ses auteurs.

Espérons que cela aide!