如何使用赛普拉斯从URL中获取:id?

时间:2019-09-11 14:42:04

标签: reactjs cypress

我目前正在从事赛普拉斯测试,但遇到一个我找不到答案的问题。希望有人可以提供帮助。

因此,在ReactJs中,我要测试以下组件:

<Link
  to={`/example/${exampleId}/subexample/create`}
  className={classes.linkIcon}
  title="Create subexample"
  data-test="new-subexample"
>

为了测试这一部分,我首先在赛普拉斯创建了一个新的example并可以正常工作,但是随后测试subexample却给我带来了问题,因为data-test="new-subexample"并没有做什么期望(即单击/example/:exampleId/subexample/create链接)。这是一些代码:

    cy.get("[data-test=new-subexample]").click()
    const subexample = faker.lorem.paragraph().substring(0, 200);

    ......
    cy.get('[data-test="submit-subexample"]').click();
    cy.get(".toast--success").should("be.visible");
  });

以前有人遇到过这种情况吗?您如何设法单击ID总是在变化的链接?

另外,也许一种方法是在创建:exampleId之后(也通过赛普拉斯)获取example,但是我找不到任何地方可以使用赛普拉斯从URL获取元素。 / p>

谢谢。

screenshot of the error

更新:问题是重定向需要花费一些时间,并且从未及时完成以通过测试。我在重定向之前添加了一个等待时间(使用cy.wait()),现在测试通过了。

1 个答案:

答案 0 :(得分:0)

要在重定向后测试URL,可以使用cy.url

cy.url().should('include', `/example/${exampleId}/subexample/create`);