对于赛普拉斯来说这是一个陌生的事物,到目前为止一直很顺利,直到我想伪造一个网络请求为止。代码是这样的:
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'])
但是结果如下:
答案 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');