【问题标题】:in cypress, intercept in test doesn't work在柏树中,测试中的拦截不起作用
【发布时间】:2021-03-24 17:25:41
【问题描述】:

我开始使用 cypress,我想做 2 次测试。如果我的 api 返回“false”,则验证显示的内容;如果我的 api 返回“true”,则验证屏幕上显示的内容。 我试着做一个像这样的简单测试:

context('contextTest', () => {
  before(() => {
    cy.waitLoading();
  });
  beforeEach(() => {});

  it('false test', function() {
    cy.intercept('POST', '**/test/alreadySent', {
      fixture: 'test/alreadySent-false.json',
    }).as('alreadySent');

    cy.wait('@alreadySent');
    cy.get('[data-cy=alreadysent-button]');
  });
});

但是拦截不起作用,它总是返回真正的 api 调用。 奇怪的是,如果我只是将代码放在我的 before() 中,一切都可以正常工作。

context('contextTest', () => {
  before(() => {
    cy.intercept('POST', '**/test/alreadySent', {
      fixture: 'test/alreadySent-false.json',
    }).as('alreadySent');

    cy.waitLoading();
  });
  beforeEach(() => {});

  it('false test', function() {
    cy.wait('@alreadySent');
    cy.get('[data-cy=alreadysent-button]');
  });
});

但我需要更改下一个测试的截距,所以我想专门设置这个测试的截距。

有可能吗,为什么我的第一个代码似乎不起作用? 或者我应该在另一个文件上编写我的下一个测试并且在同一个文件上进行这种验证是一种不好的做法?

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    由于它在拦截按命令顺序向上移动时起作用,因此似乎cy.waitLoading() 触发 POST 而不是cy.get('[data-cy=alreadysent-button]')

    必须始终在触发(页面访问或按钮点击)之前设置拦截。

    但截距因测试而异,因此我会尝试设置一个在每个测试顶部调用的辅助函数,而不是 before()

    const loadAndIntercept = (apiResult) => {     
      const apiFixture = apiResult ? 'test/alreadySent-true.json' : 'test/alreadySent-false.json';
      cy.intercept('POST', '**/test/alreadySent', { fixture: apiFixture }).as('alreadySent');
      cy.waitLoading();
    })
    
    it('false test', function() {
      loadAndIntercept(false);
      cy.wait('@alreadySent');
      cy.get('[data-cy=alreadysent-button]');
    });
    
    it('true test', function() {
      loadAndIntercept(true);
      cy.wait('@alreadySent');
      cy.get('[data-cy=alreadysent-button]');
    });
    

    这应该可以工作,因为在测试之间清除了拦截。参考docs - intercept

    注意:每次测试前都会自动清除所有拦截。

    【讨论】:

    • 你完全正确。显然是 waitLoading 等待页面加载,所以当然测试根本没有运行,并且拦截来得太晚了......抱歉打扰了,它工作得很好,我喜欢你对函数的想法谢谢!
    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    相关资源
    最近更新 更多