Cypress Custom Commands: значения по умолчанию не распознаны - PullRequest
0 голосов
/ 24 апреля 2020

Следуя рекомендациям Cypress, мне удалось зарегистрировать свои пользовательские команды Cypress в моей IDE через Typescript. Единственное, с чем у меня проблемы - это значения по умолчанию для моих команд.

В основном:

  • Я создаю команду со значениями по умолчанию
  • Я регистрирую Команда в index.d.ts
  • Я упоминаю значения по умолчанию в JSDo c
  • При использовании этой команды, если я не указываю некоторые аргументы, которые имеют значения по умолчанию, моя IDE несчастный

Пример фрагмента:

// commands.js
Cypress.Commands.add("rsChoose", {
    prevSubject: true
}, (subject, text="", num=1, all=false) => {
    // Open the select
    cy.wrap(subject)
        .click();
    // Display all options
    if (all === true) {
        cy.wrap(subject)
            .find(rsShowMoreButton)
            .click();
    }
    // Alias the option list
    cy.wrap(subject)
        .find(rsOptions)
        .as("options");
    // Filter our options with our text
    if (text.length > 0) {
        cy.get("@options")
            .contains(text)
            .as("options");
    }
    // Choose the first matching option
    cy.get("@options")
        .eq(num - 1)
        .click();
    return cy.wrap(subject)
});
// index.d.ts
declare namespace Cypress {
  interface JQuery<HTMLElement> {
    /**
     * Allows you to select an option from a FieldBox React select based on a given text
     * If no text is given, will simply pick the first option
     * Most select only display a limited amount of options. We can display them using the "all" param
     * @prevSubject subject
     * @param {String} [text=""] - The text our option must contain
     * @param {Number} [num=1] - The option number we want to get (starts at 1)
     * @param {Boolean} [all=false] - Forces the select to display all the available options
     * @returns {Cypress} - The original subject (Cypress-wrapped select wrapper)
     */
    rsChoose(text, num, all): JQuery<HTMLElement>
  }
}

Ошибка в моей IDE:

https://i.imgur.com/2o0MVq6.png

Я не уверен, что изменить, чтобы исправить эту проблему: (

1 Ответ

2 голосов
/ 24 апреля 2020

Вы должны указать Typescript, что некоторые параметры являются необязательными:

// index.d.ts
declare namespace Cypress {
  interface JQuery<HTMLElement> {
    rsChoose(text?, num?, all?): JQuery<HTMLElement>
  }
}

Также, если вы используете Typescript, я рекомендую вам добавить типы к вашим параметрам;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...