假设我在React.js项目中有一个setInterval
,它是从15秒到0秒的倒计时。然而,我想在e2 e测试中使这个过程更快,因为15秒可能是60,120甚至240秒。
所以,这段代码是有效的:
describe('Test timer', () => {
before(() => {
cy.clock()
cy.visit('http://localhost:3000')
})
it('Displays timer, pass 15 seconds, does not display timer', () => {
cy.get('div [data-cy=counterText]').should('have.text', '15');
cy.tick(15000);
cy.get('div [data-cy=counterText]').should('have.text', '0');
})
})
但是在项目中,我通常会像这样分割一些代码:
describe('Test timer', () => {
before(() => {
cy.clock()
})
it('Visit site', () => {
cy.visit('http://localhost:3000')
})
it('displays timer', () => {
cy.get('div [data-cy=counterText]').should('have.text', '15');
})
it('does not display timer', () => {
cy.tick(15000);
cy.get('div [data-cy=counterText]').should('have.text', '0');
})
})
问题是,上面的代码给了我以下错误消息:
cy.tick() cannot be called without first calling cy.clock()
我已经尝试将cy.clock()
移动到不同的位置,但没有成功,所以问题是:在上面的用例中,我应该把cy.clock()
放在哪里?
我用的是Cypress 8.X以防万一
先谢谢你了!
1条答案
按热度按时间2wnc66cl1#
您必须保留时钟示例,因为(我认为)测试之间的清除会影响您所期望的模式。
您还需要关闭tick上的日志记录,因为日志记录代码中有一个错误。(没有深入讨论这个问题)。
简单的测试app