赛普拉斯异步问题

时间:2019-10-25 21:36:26

标签: reactjs cypress

我在测试中遇到一种情况,我单击一个按钮,这在我的reactJS端发出了apollo graphQL调用。

          createProductCategory({
            variables: {
              restaurantID: props.restaurant.id,
              name: name
            }
          });

这就是ReactJS端的样子。此 createProductCategory 方法返回一个 promise ,我们等待并继续其余代码。

当我手动单击按钮时,此方法非常正常。我可以在网络选项卡中看到对graphQL的调用,它工作正常。但是,如果我尝试让cypress单击该按钮,则可以看到该按钮被单击了,但从未调用graphQL。我只是不明白为什么它不起作用以及我在做什么错。

有人可以帮我这个忙吗?我试图在所有地方放置等待语句,但是它只是不“等待” reactJS方面的承诺得到解决。

      cy.contains("Save")
        .click()
        .then(() => {
          cy.wait(2000)
        });

     cy.wait(2000)

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

在您描述的内容中,您应该具有围绕单击按钮的代码,并像这样等待graphql调用完成

cy.server()
cy.route('/graphql').as('graphql')
cy.get('buton').contains('abc').click()
cy.wait('@graphql')

更多信息:alias waits