web-dev-qa-db-ja.com

Cypress.io-cy.route()のリクエストパラメータに基づいてプログラムで応答を設定

エンドツーエンドテストでAPIリクエストをスタブしているため、送信されるリクエストパラメータに応じて異なるレスポンスを返すことができます。

現在、私のスタブは何が投稿されたかに関係なく静的な応答を返し、次のようになります。

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

投稿されたリクエストパラメータを確認し、どのレスポンスを返すかを条件付きで決定できるようにしたいと思います。私はこのようなことをやろうとしています:

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
})

明らかに、上記のコードは機能しません。それは私がやろうとしていることのほんの一例です。

サイプレスが応答メソッドを許可していることを知っていますが、ドキュメントのどこかに、実行したいことの構文が見つかりません。どの応答を返すかを決定できるように、応答メソッドで要求パラメーターを取得するにはどうすればよいですか?

20
EmacsVI

同じ問題があり、これを有効にする機能を作成しました。立ち上がるにはバウンスバックURLが必要ですが、コードのインストール手順はここにあります https://bitbucket.org/snippets/matt-tasc/onraxo

0
matthewdaniel