Cypress.io-根据cy.route()

时间:2018-08-22 21:27:03

标签: javascript integration-testing end-to-end cypress

我正在端到端测试中对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
})

显然,上面的代码不起作用;这只是我正在尝试做的一个例子。

我知道赛普拉斯允许使用响应方法,但是我无法在他们的文档中的任何地方找到想要执行的语法。如何在我的响应方法中获取请求参数,以便决定返回哪个响应?

3 个答案:

答案 0 :(得分:0)

我相信这应该有效

<label>Stuff:</label>

答案 1 :(得分:0)

遗憾的是,cy.server当前不支持此功能。

该问题正在此处跟踪:https://github.com/cypress-io/cypress/issues/521

解决方法

使用标准的javascript模拟。您可以使用linked issue中多次提及的cypress onBeforeLoad在测试中运行此模拟。它不漂亮。希望柏树在cy.server中获得本地支持。

答案 2 :(得分:0)

我遇到了同样的问题,并做了一个功能来启用它。它确实需要站起来一个跳回网址,但是可以在这里https://bitbucket.org/snippets/matt-tasc/onraxo

看到代码安装说明。