Измените синтаксис для определений шагов транспортира с обещаний на асинхронный синтаксис - PullRequest
0 голосов
/ 28 июня 2018

У меня есть структура транспортир-огурец, чьи определения шагов несколько структурированы согласно этому: 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 () {}», тогда несколько шагов пройдут, но другие не пройдут.

1 Ответ

0 голосов
/ 28 июня 2018

Это предложения / подсказки. Они визуально показывают, что vscode может выполнить действие для возможного рефакторинга / улучшения вашего кода, но они не рассматриваются как ошибки.

Вы можете отключить их, добавив "javascript.suggestionActions.enabled": false в настройки пользователя / рабочего пространства.

enter image description here

enter image description here

Источник: https://github.com/Microsoft/vscode/issues/47299

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