Как я могу использовать WebStorm для создания файла определения шага Cucumber в TypeScript вместо JavaScript?

Я создаю новый набор тестов e2e, используя Cucumber.js, и я хотел бы использовать TypeScript для своих пошаговых файлов. Когда я создаю новый шаг и нажимаю Alt+Enter, чтобы WebStorm сгенерировал новый файл шага, единственный вариант, который мне предоставляется, — это создать файл JavaScript.введите здесь описание изображения

Кто-нибудь знает, как я могу создать новый файл шага в TypeScript?


person Yehuda Miller    schedule 26.09.2016    source источник


Ответы (1)


Webstorm, похоже, не предоставляет мастера для типа файла «TypeScript», поэтому вы можете создать файл определения шага вручную.

Для простого математического примера возможный файл определения шага TS может выглядеть следующим образом:

import * as cucumber from "cucumber";

module.exports = function () {
    // Assign this to a typed variable so we have type-safe access
    let sd: cucumber.StepDefinitions = this;

    // The common variable is simply kept in function scope here
    let variable: number = 0;

    sd.Given(/^a variable set to (\d+)$/, (value: string) => {
        variable = parseInt(value);
    });

    sd.When(/^I increment the variable by (\d+)$/, (value: string) => {
        variable += parseInt(value);
    });

    sd.Then(/^the variable should contain (\d+)$/, (value: string) => {
        if (variable != parseInt(value))
            throw new Error('Variable should contain '+value
                          + ' but it contains ' + variable + '.');
    });
};

Поместите этот контент, например. features/step_definitions/mathSteps.ts и вставьте код функции из примера в файл с именем, например. features/math.feature и у вас должен быть работающий пример.

person Jens    schedule 26.09.2016
comment
Я выбираю этот ответ только для раздела Webstorm doesn't seem to provide a wizard for file type "TypeScript". Это в значительной степени то, что я хотел узнать. Спасибо! - person Yehuda Miller; 27.09.2016
comment
я не смог ничего получить через огурец.StepDefinitions. Ошибка: StepDefinitions не существует для типа 'typeof path/to/my/cucumber/@types/index.ts' - person user2954463; 10.10.2017