赛普拉斯-cy.wait()超时,等待5000ms的第一个请求到路由

时间:2019-06-17 00:36:25

标签: cypress

对于赛普拉斯来说这是一个陌生的事物,到目前为止一直很顺利,直到我想伪造一个网络请求为止。代码是这样的:

describe('Some test', function(){
it('Can fake out an XHR response', function(){
    cy.server()
    cy.route('https://reqres.in/api/users', [{ id: 1, name: 'Pat' }]).as('getMessages')
    cy.request('https://reqres.in/api/users')
    cy.wait(['@getMessages'])

...

无论我尝试什么,我都会得到:

CypressError:超时重试:cy.wait()超时,等待5000ms的第一个请求到路由:“ getMessages”。从未发生过请求。

我在这里做什么错了?

编辑:我将代码更改为此:

cy.server()
cy.route('https://reqres.in/api/users', [{ id: 1, name: 'Pat' }]).as('getMessages')
cy.request('https://reqres.in/api/users')
cy.wait(['@getMessages'])

但是结果如下:

3 个答案:

答案 0 :(得分:0)

cy.wait()中,为什么要在括号中输入@getMessages,您可以删除这些内容并尝试如下操作。另外,请在cy.wait()之后尝试使用cy.request(),看看有什么不同

describe('Some test', function(){
it('Can fake out an XHR response', function(){
    cy.server();
    cy.route('https://reqres.in/api/users', { id: 1, name: 'Pat' }).as('getMessages');
    cy.wait('@getMessages');
    cy.request('https://reqres.in/api/users');

答案 1 :(得分:0)

您是否尝试过在请求中放入该方法?

cy.route('GET', '**/foo/**', {}).as('foo');

并且wait是否应该在请求之后?

cy.server();
cy.route('GET', 'https://reqres.in/api/users', { id: 1, name: 'Pat' }).as('getMessages');
cy.request('https://reqres.in/api/users');
cy.wait('@getMessages');

答案 2 :(得分:0)

帮助我的是将功能包装在server()和wait()之间。我很奇怪。

所以:

cy.server().route(...) ; 

// here, instead of calling cy.find().click(), wrap it in a function and call the function
clickTheElement();

cy.wait('@alias');