Переопределение окна как контекст вызова функции - PullRequest
0 голосов
/ 18 марта 2019

Я пишу тестовые случаи на кипарисе, и каждая строка, которую я пишу, ссылается на объект cy.Пример моего тестового кода выглядит примерно так:

it('does stuff', () => {
    cy.visit(startUrl);
    cy.get(".new-item-button").click();
    cy.url().should('include', url2);
    cy.get(".home-link").click();
    cy.url().should('include', startUrl);
    cy.url().should('not.include', url2);
}

Видя все ссылки на cy, мне грустно.Есть ли способ заставить вызовы функции в моей тестовой функции использовать другой контекст вызова?Простое удаление cy заставило бы javascript искать глобальные функции, но в любом случае я заставляю javascript искать их в объекте cy, чтобы я мог писать так?

it('does stuff', () => {
    visit(startUrl);
    get(".new-item-button").click();
    url().should('include', url2);
    get(".home-link").click();
    url().should('include', startUrl);
    url().should('not.include', url2
}

, что заставило бы меня чувствоватьсчастливее.Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

Поскольку вызов родительской команды запускает новую команду, вы можете сделать это:

it('does stuff', () => { 
cy.visit(startUrl)
.get(".new-item-button").click()
.url().should('include', url2)
.get(".home-link").click()
.url().should('include', startUrl)
.url().should('not.include', url2)
 }
1 голос
/ 18 марта 2019

Вы можете , если вы не используете строгий режим, но вам, вероятно, не следует. Оператор JavaScript with фактически устарел, потому что делает код очень неясным (подробности в этой статье Дугласа Крокфорда).

Вот как вы это сделаете с with:

// NOT RECOMMENDED, and doesn't work in strict mode
with (cy) {
    visit(startUrl);
    // ...
}

cy. уже довольно короткий, я бы настоятельно рекомендовал просто продолжать его использовать. Это просто и понятно для других, приходящих к коду.

...