• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 04/02/2020

Simulez un service avec les mocks

Imaginez que vous avez la charge de tester un logiciel. Un service primordial comme l'authentification est toujours en cours de développement. Vous êtes donc bloqué pour tester des scénarios qui impliquent l'authentification.

SoapUI offre la possibilité de simuler un service à partir de son WSDL. En quelques clics, vous pouvez avoir un service qui tourne sur un serveur interne de SoapUI et qui simule le fonctionnement du vrai service.

Allons tester cette magie, voulez-vous ? :)

Nous allons créer un nouveau projet à partir d'un simple WSDL qui accepte en entrée un prénom et affiche Bonjour + prénom.

Copiez ce WSDL et enregistrez-le sous bonjour.wsdl

<definitions name = "BonjourService"
   targetNamespace = "http://www.exemples.com/wsdl/BonjourService.wsdl"
   xmlns = "http://schemas.xmlsoap.org/wsdl/"
   xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:tns = "http://www.exemples.com/wsdl/BonjourService.wsdl"
   xmlns:xsd = "http://www.w3.org/2001/XMLSchema">

   <message name = "AfficherBonjourRequest">
      <part name = "prenom" type = "xsd:string"/>
   </message>

   <message name = "AfficherBonjourResponse">
      <part name = "bonjour" type = "xsd:string"/>
   </message>

   <portType name = "Bonjour_PortType">
      <operation name = "afficherBonjour">
         <input message = "tns:AfficherBonjourRequest"/>
         <output message = "tns:AfficherBonjourResponse"/>
      </operation>
   </portType>

   <binding name = "Bonjour_Binding" type = "tns:Bonjour_PortType">
      <soap:binding style = "rpc"
         transport = "http://schemas.xmlsoap.org/soap/http"/>
      <operation name = "afficherBonjour">
         <soap:operation soapAction = "afficherBonjour"/>
         <input>
            <soap:body
               encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
               namespace = "urn:exemples:bonjourservice"
               use = "encoded"/>
         </input>

         <output>
            <soap:body
               encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"
               namespace = "urn:exemples:bonjourservice"
               use = "encoded"/>
         </output>
      </operation>
   </binding>

   <service name = "Bonjour_Service">
      <port binding = "tns:Bonjour_Binding" name = "Bonjour_Port">
         <soap:address
            location = "http://www.exemples.com/AfficherBonjour/" />
      </port>
   </service>
</definitions>
  • Créez pour l'occasion un nouveau projet et appelez-le Bonjour. À l'étape où on vous demande un WSDL, choisissez celui que vous avez enregistré dans votre ordinateur puis validez.

Figure 45
Figure 45
  • Faites un clic droit sur bonjour_binding puis choisissez Generate SOAP Mock Service.

Figure 46
Figure 46
  • Vous tombez sur le générateur de mocks qui vous proposera de choisir les opérations à inclure, dans ce cas il n'y en a qu'une. Changez par contre Path pour le simplifier, mettez bonjour tout simplement à la place. Validez.

Figure 47
Figure 47
  • On vous demandera ensuite de choisir le nom à donner à ce mock, entrez "MockBonjour".

Figure 48
Figure 48
  • Créez une propriété "name" au niveau du projet. Pour ce faire, cliquez sur le projet et ajoutez la propriété en bas dans le panneau affiché.

Figure 49
Figure 49
  • Revenez dans le mock créé et double cliquez sur Response 1. Celle-ci représente la réponse que le mock va simuler quand vous l'invoquerez. Nous allons mettre en réponse la propriété name que nous avons fixé plus haut. Fermez ensuite cette fenêtre.

Figure 50
Figure 50
  • Doublez cliquez sur MockBonjour à gauche afin d'afficher la fenêtre de celui-ci. Celle-ci vous permet de lancer le mock dans le serveur interne de SoapUI. Celui-ci sera alors disponible exactement comme n'importe quel service. Cliquez sur le bouton play pour le lancer.

Figure 51
Figure 51
  • Vous avez en haut à droite running on port 8088 qui vous indique le port de votre service. Afin de tester que celui-ci marche bel et bien, rendez-vous dans votre navigateur à l'adresse = http://localhost:8088/, vous devriez avoir ceci :

Figure 52
Figure 52
  • SoapUI vous indique que vous avez un mock qui fonctionne et vous fournit son adresse de WSDL.

  • Vous allez maintenant faire appel à ce service depuis la requête qu'on avait au départ. Double cliquez sur Request 1 et remplacez là aussi le contenu de la balise < prenom > par la propriété que nous avons définie (vous savez faire maintenant :p).

  • Remplacez l'adresse du service par celui qu'on vient de créer : http://localhost:8088/bonjour

Figure 53
Figure 53

Il ne vous reste plus qu'à appuyer sur le bouton play pour lancer le test.

Figure 54
Figure 54

Vous verrez alors par magie apparaître le résultat attendu, à savoir le prénom que vous avez fixé dans la propriété name. Changez ce prénom et testez encore pour vérifier. Si vous préférez qu'il vous affiche "Bonjour Robert", il suffit d'éditer Response 1 en ajoutant le mot "bonjour" avant la propriété.

Votre requête vient d'interroger votre mock qui s'est comporté comme un vrai service et a répondu avec un message SOAP valide.

Vous pouvez grâce à cet outil simuler tout une ribambelle de services avant même de commencer à les développer. Vous pouvez aussi tester le service que vous comptez développer et l'intégrer dans un système déjà existant afin de vérifier qu'il s'intègre correctement, avant d'écrire la logique.

Exemple de certificat de réussite
Exemple de certificat de réussite