2016-04-29 1 views
2

J'utilise le module wheresrhys fetch-mock npm pour exécuter des tests fonctionnels dans mon application. Je voudrais simuler un fetch avec la méthode 'POST' et une charge spécifique.Comment puis-je récupérer une requête de post avec une charge utile?

Il ressemblerait à quelque chose comme ceci:

fetchMock.mock({ 
     routes: { 
      name: 'LoginSuccess', 
      matcher: "https://myurl", 
      method: 'POST', 
      payload: { 
       params:{User: "[email protected]", Password: "password"} 
      }, 
      response: { 
       result:{ 
        message: "Successful login", 
        credentials: "XXXXXXXXXXXXX" 
       } 
      } 
     } 
    }); 

Je voudrais vérifier la charge utile de ma chercher et donner une réponse en conséquence. Par exemple, je pourrais simuler une connexion où l'utilisateur soumet le mauvais mot de passe, puis ils essaient à nouveau et soumettent les informations correctes et sont autorisés à accéder. Même URL, différentes charges utiles, réponses différentes.

Est-ce possible? Je sais qu'il est possible de vérifier la méthode d'extraction, mais j'aimerais faire la même chose avec la charge utile.

Ou y a-t-il une meilleure façon de faire cela?

Je n'ai pas trouvé de solution dans le readme du module ou dans la section de test de the fetch-mock package.

Répondre

1
fetchMock.mock({ 
    routes: [{ 
      name: 'LoginSuccess', 
      matcher: function(url, opts) { 
       return (url=="https://myurl" && opts && opts.params && opts.params.User=="[email protected]" && opts.params.Password=="password"); 
      }, 
      response: { 
       result:{ 
        message: "Successful login", 
        credentials: "XXXXXXXXXXXXX" 
       } 
      } 
     }, { 
      name: 'LoginFail', 
      matcher: function(url, opts) { 
       return (url=="https://myurl" && opts && opts.params && opts.params.User=="[email protected]" && opts.params.Password!=="password"); 
      }, 
      response: { 
       result:{ 
        message: "Unsuccessful login" 
       } 
      } 
    }] 
}); 
+0

La propriété 'routes' est-elle nécessaire? Qu'est-ce que cela a fonctionné pour moi était juste d'envoyer un objet comme argument avec nom, matcher, etc. – alayor