У меня есть структура транспортир-огурец, чьи определения шагов несколько структурированы согласно этому: https://github.com/cucumber/cucumber-js/blob/master/docs/support_files/step_definitions.md
Я использую return
и соединяю обещания вместе. Недавно я столкнулся с другим синтаксисом, называемым функцией async
. Но когда я пытаюсь преобразовать мои определения шагов в асинхронные, все файлы справки в структуре, где я использую, скажем, module.exports
и require()
, отображают следующее предупреждение:
[ts] Файл является модулем CommonJS; он может быть преобразован в модуль ES6.
Когда я запускаю тестовые случаи, так как не могу получить доступ к этим вспомогательным файлам из-за ошибки, мои тестовые примеры терпят неудачу. Например, объектные файлы моей страницы, я не могу получить к ним доступ из своих тестов. Я думаю, что они не экспортируются, как раньше.
Может, кто-нибудь подскажет мне, как я могу изменить свои тестовые примеры на асинхронный синтаксис, не нарушая их? Как мне решить вышеуказанную проблему, не прерывая мои тесты основным способом.
Добавление кода
Вот шаг от моего определения шага до изменения
let {Дано, тогда, когда} = require ('огурец');
Given(/^I am on the "([^"]*)" page$/, function (home) {
home = this.url.FDI_HOME;
return browser.get(home);
});
Вот определение шага, после того как я изменил его на асинхронную функцию
let { Given, Then, When } = require('cucumber');
Given(/^I am on the "([^"]*)" page$/, async function (home) {
home = this.url.HOME
await browser.get(home);
});
И я изменю другие мои шаги таким же образом. Проблема возникает, когда я пытаюсь выполнить вышеуказанный шаг, он не может сказать, что не может получить доступ к this.url.HOME. У меня есть другой файл для предоставления URL-адресов, который называется urls.js выглядит примерно так
let targetStore = browser.params.store || 'bestbuy';
let FDI_HOST = browser.params.fdi;
module.exports = {
HOME Page: 'https://homepage.com',
Shop_Page: 'https://shop.com',
storeLink: `http://www.${targetStore}.com`,
};
Я вижу три точки под словом "module.exports" в коде VS, и когда я нахожу его над ним, появляется сообщение об ошибке: [ts] Файл - это модуль CommonJS; он может быть преобразован в модуль ES6.
Я пытался найти решение для этого, но не смог успешно сделать это. если я использую синтаксис как «async () => {}», то тестовые случаи не пройдут, но когда я использую «async function () {}», тогда несколько шагов пройдут, но другие не пройдут.