我正在使用赛普拉斯进行端到端测试。在我的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
,我认为这也会阻止警告。谢谢。
可能不是你想听到的,但我能否证实你使用cy.then(...)
是我所知道的等待赛普拉斯承诺的最标准方式。
在阅读了你的问题后,我试图使用赛普拉斯Network Requests功能等待fetch('my/url')
中的before()
,但它似乎根本没有检测到请求。