web-dev-qa-db-fra.com

Cypress.io - Réponse définie par programme en fonction des paramètres de demande dans cy.route ()

J'arrête une demande d'API dans mon test de bout en bout et j'aimerais pouvoir renvoyer une réponse différente en fonction des paramètres de demande envoyés.

Actuellement, mon talon retourne une réponse statique indépendamment de ce qui est publié, et ressemble à ceci:

cy.server()
cy.route({
    method: 'POST',
    url: '**/redeem-code',
    status: 200,
    response: {
        status: "Success"
    },
    delay: 500
})

Je voudrais pouvoir vérifier les paramètres de demande postés et ensuite décider conditionnellement quelle réponse retourner. J'essaie de faire quelque chose comme ça:

cy.server()
cy.route({
    method: 'POST',
    url: '**/redeem-code',
    status: 200,
    response: (req) => {
        if(req.code == '1234') return { status: "Success" }
        else return { status: "Failure" }
    },
    delay: 500
})

De toute évidence, le code ci-dessus ne fonctionne pas; ce n'est qu'un exemple de ce que j'essaie de faire.

Je sais que Cypress autorise les méthodes de réponse, mais je ne trouve pas la syntaxe de ce que je veux faire n'importe où dans leurs documents. Comment puis-je obtenir les paramètres de demande dans ma méthode de réponse afin que je puisse décider quelle réponse retourner?

20
EmacsVI

J'ai eu le même problème et j'ai créé une fonctionnalité pour l'activer. Il nécessite une URL de rebond pour être affiché, mais les instructions d'installation du code peuvent être vues ici https://bitbucket.org/snippets/matt-tasc/onraxo

0
matthewdaniel