1

我的页面上有树值。在一个事件之后,这些树值应该改变。我想得到它们的初始值,然后在事件发生后,我想看看它们是否正确增加。我可以在不将它们相互链接的情况下读取并保存这些树值吗?
现在的代码是:

let active_tours: number;
let active_drivers: number;
let total_capacity: number;
cy.get('[data-cy="txt-dashboard-active_tours"]')
  .invoke('text')
  .then((txt) => {
    active_tours = parseInt(txt, 10);

    cy.get('[data-cy="txt-dashboard-active_drivers"]')
      .invoke('text')
      .then((txt) => {
        active_drivers = parseInt(txt, 10);

        cy.get('[data-cy="txt-dashboard-total_capacity"]')
          .invoke('text')
          .then((txt) => {
            total_capacity = parseInt(txt, 10);

            cy.createTour('email', 'password').then(
              (response: any) => {
                cy.get('[data-cy="txt-dashboard-active_tours"').should(($div) => {
                  expect($div.text().trim()).equal((active_tours + 1).toString());
                });
                cy.get('[data-cy="txt-dashboard-active_drivers"').should(($div) => {
                  expect($div.text().trim()).equal((active_drivers + 1).toString());
                });
                cy.get('[data-cy="txt-dashboard-total_capacity"').should(($div) => {
                  expect($div.text().trim()).equal(
                    (total_capacity + response.vehicle.capacity).toString()
                  );
                });
              }
            );
          });
      });
  });
4

1 回答 1

1

要最小化异步回调,请使用别名和this属性,请参阅共享上下文

it('minimizes callbacks', function () {        // must be function here

  cy.get('[data-cy="txt-dashboard-active_tours"]')
    .then($el => parseInt($el.text(), 10))
    .as('tours')                               // saved as this.tours

  cy.get('[data-cy="txt-dashboard-active_drivers"]')
    .then($el => parseInt($el.text(), 10))
    .as('drivers')                             // saved as this.drivers

  cy.get('[data-cy="txt-dashboard-total_capacity"]')
    .then($el => parseInt($el.text(), 10))
    .as('capacity')                            // saved as this.capacity

  cy.createTour('email', 'password').then(response => {

    cy.get('[data-cy="txt-dashboard-active_tours"')
      .then($el => parseInt($el.text(), 10))
      .should(tours2 => expect(tours2).to.eq(this.tours + 1))

    cy.get('[data-cy="txt-dashboard-active_drivers"]')
      .then($el => parseInt($el.text(), 10))
      .should(drivers2 => expect(drivers2).to.eq(this.drivers + 1))

    cy.get('[data-cy="txt-dashboard-total_capacity"')
      .then($el => parseInt($el.text(), 10))
      .should(capacity2 => {
        expect(capacity2).to.eq(this.capacity + response.vehicle.capacity)
      })
  })
})

如果你想删除一些代码重复

Cypress.Commands.add('saveNumber', (selector, alias) => {
  cy.get(selector).then($el => parseInt($el.text(), 10)).as(alias)
})

it('minimizes callbacks', function () {        // must be function here

  cy.saveNumber('[data-cy="txt-dashboard-active_tours"]', 'tours')
  cy.saveNumber('[data-cy="txt-dashboard-active_drivers"]', 'drivers')
  cy.saveNumber('[data-cy="txt-dashboard-total_capacity"]'), 'capacity')

  cy.createTour('email', 'password').then(response => {

    cy.saveNumber('[data-cy="txt-dashboard-active_tours"]', 'tours2')
      .should(() => expect(this.tours2).to.eq(this.tours + 1))

    cy.saveNumber('[data-cy="txt-dashboard-active_drivers"]', 'drivers')
      .should(() => expect(this.drivers2).to.eq(this.drivers + 1))

    cy.saveNumber('[data-cy="txt-dashboard-total_capacity"]'), 'capacity')
      .should(() => {
        expect(this.capacity2).to.eq(this.capacity + response.vehicle.capacity)
      })
  })
})
于 2021-10-22T02:20:29.670 回答