使用除cy.request之外的其他内容在赛普拉斯中播种数据

问题描述 投票:1回答:1

我正在使用赛普拉斯进行端到端测试。在我的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(...));
});

这似乎有点不必要,在黑暗中是一种刺痛,所以我想知道是否有一种规定的方式来做我需要做的事情。我无法更改我使用的SDK以使用cy.request,我认为这也会阻止警告。谢谢。

cypress
1个回答
1
投票

可能不是你想听到的,但我能否证实你使用cy.then(...)是我所知道的等待赛普拉斯承诺的最标准方式。

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

© www.soinside.com 2019 - 2024. All rights reserved.