Проблема в том, что this.Advertiser
не определено при вызове функции should
. Вы не предоставили кусок кода, где этот элемент инициализирован, но я думаю, что он инициализирован внутри then
или это свойство. В любом случае, как и большинство методов Cypress, когда вызывается should
, он фактически не выполняет проверку, а только ставит в очередь команду, которая будет выполнена позже для выполнения проверки. Это означает, что когда вызывается should
, this.Advertiser
по-прежнему undefined
, и это передается в качестве аргумента функции should
, даже если команда should
выполняется позже, this.Advertiser
имеет допустимое значение.
Решение должно заключаться в том, чтобы вместо использования this.Advertiser
поместить весь блок кода, который появляется в вашем вопросе, в блок then
, где значение, в котором this.Advertiser
инициализируется, и вместо него используется параметр, переданный этому блоку then
. Это должно выглядеть примерно так:
cy.somethingThatProvidesAdvertiser().then(advertiser => {
cy.get('input[placeholder="Filter..."]:nth(2)').type("campaign1");
cy.get("tbody")
.contains("campaign1")
.closest("tr")
.should("contain.text", advertiser)
.should("contain.text", this.Brand)
.find("td")
.eq(5)
.then(text => {
const rowText = text;
});
});
Я полагаю, что вы должны сделать то же самое для this.Brand
, что означает, что вы должны иметь вложенные 2 then
предложения.
Iнадеюсь, мне удалось объяснить это достаточно ясно ...