使用cy.request以外的方法在Cypress中播种数据

时间:2018-07-25 15:42:25

标签: cypress

我正在使用赛普拉斯进行端到端测试。在我的beforeEach中,我使用的是已提供的SDK,用于在服务器上播种数据(SDK将API调用发送到服务器,但内部未使用cy.request)。 SDK上的方法返回了一个Promise,因此我认为我可以像这样返回Promise:

beforeEach(() => {
  return sdk.createProperty(...);
});

然后我的测试执行以下操作:

it('displays a property', () => {
    cy.visit(`/companies/${appTestData.companyId}/properties`);
    ...the rest is commented out currently...
}

这实际上按预期工作,也就是说,它会等到服务器响应返回后再运行测试,但是当测试实际运行时,我会在控制台中看到以下警告:

Cypress Warning: Cypress detected that you returned a promise in a test, but also invoked one or more cy commands inside of that promise...

我注意到,如果我将beforeEach更改为使用cy.then,警告就会消失:

beforeEach(() => {
  cy.then(() => sdk.createProperty(...));
});

这似乎有点不必要,在黑暗中有点刺伤,所以我想知道是否有规定的方式来做我需要做的事情。我无法更改要用于cy.request的SDK,我认为这样做也可以防止出现警告。谢谢。

1 个答案:

答案 0 :(得分:1)

可能不是您想听到的,但是我可以确认一下,使用cy.then(...)是我所知道的在赛普拉斯中等待Promise的最标准方法。

在阅读完您的问题后,我尝试使用赛普拉斯的Network Requests功能来等待fetch('my/url')中的before(),但似乎根本没有检测到请求。