// Wait for the route aliased as 'getAccount' to respond
// without changing or stubbing its response
cy.server()
cy.route('/accounts/*').as('getAccount')
cy.visit('/accounts/123')
cy.wait('@getAccount').then((xhr) => {
// we can now access the low level xhr
// that contains the request body,
// response body, status, etc
})
7条答案
按热度按时间z0qdvdin1#
恕我直言,最干净的方法是不要在get中使用waits或timeout,这是一种反模式。
我建议使用Cypress waitUntil命令,并使用如下内容:
或者根据应用程序代码,您可以使用
not.be.visible
。hfyxw5xn2#
如果您特别需要等待,可以在Assert之前使用cypress的
wait()
函数,并提供超时之前等待的时间量。但是请注意,这是一个反模式,您可以在文档中找到:
你几乎永远不需要等待一段任意的时间,在Cypress中总有更好的方法来表达这一点。
也就是说,如果您的加载指示器绑定到某个网络请求,您可以在Assert之前等待它们完成。
有关等待请求的更多信息,请单击此处。
此外,请确保您确实要使用
.should('not.exist')
而不是.should('not.be.visible')
。ttvkxqim3#
加载spinner实现通常只是隐藏元素,而不是从DOM中删除它,因此
should("not.exist")
对它们不起作用。cy.get("element").should("not.be.visible")
是这种情况下的正确方法(Diogo的回答已经暗示过)。92dk7w1h4#
cypress-wait-until
对我不起作用。我只是使用了基本的:它会自动等待。
oxalkeyp5#
第一个月
这对我来说也适用。
截至
"@testing-library/cypress": "^5.3.1",
只需确保为微调组件提供了data-testid属性。
<LoadingSpinner data-testid='loading-spinner-data-testid'>
beq87vna6#
Diogo罗查的方法在很多情况下都很重要,但要真正确定图像消失了,你需要遵循Philzen的建议:Assert它是不可见的,测试回放将等待它消失。
当您计划拍摄屏幕截图或可视快照时,这一点尤其重要,因为返回的XHR请求并不一定意味着图像消失了。
wvmv3b1j7#
cypress-wait-until的用法如下:
cypress/support/commands.js
:test.spec.js
: