Cypress Testing - ожидайте, что текст будет одним из - PullRequest
0 голосов
/ 20 июня 2019

Я хочу проверить значения массива элементов, а текстовое содержимое каждого элемента должно быть одним из 'a' или 'b'.

it("should display for adventure & cabin charter when both are the only ones selected", () => {
    cy.get("button.expCategoryBtn")
      .contains("a")
      .click();
    cy.get("button.expCategoryBtn")
      .contains("b")
      .click();
    // the following line doesnt work
    cy.get("div.tag").each(x => {
    // the problem line:
    // I want to get the text value of each el & expect
    // it to be one of a or b
      expect(cy.wrap(x).invoke("text")).to.be.oneOf([
        "a",
        "b"
      ]);
    });
  });

EDIT: Я сделал это так:

  it("should display for adventure & cabin charter when both are the only ones selected", () => {
    cy.get("button.expCategoryBtn")
      .contains("Adventure")
      .click();
    cy.get("button.expCategoryBtn")
      .contains("Cabin Charter")
      .click();
    cy.get("div.tag")
      .invoke("text")
      .should("include", "adventure")
      .should("include", "cabin_charter")
      .should("not.include", "science_and_nature");
  });

Тем не менее, я не доволен этим и все равно хотел бы получить некоторые отзывы о том, как правильно тестировать, когда мы хотим утвердить одно из нескольких значений. Спасибо.

1 Ответ

0 голосов
/ 20 июня 2019

Похоже, вы пытаетесь провести условное тестирование , что не является наилучшей практикой.

В любом случае, вы можете сделать это так:

    cy.get("div.tag").each(x => {
      expect(x.text()).to.be.oneOf([
        "a",
        "b"
      ]);
    });
...