Проблема с написанием определений шагов - Cucumber & Appium на JavaScript - PullRequest
0 голосов
/ 27 мая 2020

Я работаю над проектом, который больше похож на доказательство концепции. На самом деле PO C для меня, поскольку я уверен, что это было сделано раньше.

Я пытаюсь работать с Cucumber. js, Appium Server / Client, Node и Javascript на Visual Код студии.

Немного фона. Я новичок в Javascript, но не совсем новичок в BDD / Cucumber и автоматическом тестировании с Appium.

Я столкнулся с препятствием в самом начале проекта, и я не могу понять, что не так и где до go отсюда. Поиск в inte rnet никуда меня не привел - вероятно, поиск не в нужных местах r с правильными ключевыми словами.

Позвольте мне объяснить. Я создал файлы функций в рабочей области в коде Visual Studio следующим образом:

 Feature: Change Font Size

  Scenario: Set Font Size to Default
    Given that I am on Font Size option
    When I click the default option
    Then The font size should be set to default

  Scenario: Set Font Size to Small
    Given that I am on Font Size option
    When I click the small option
    Then The font size should be set to small

Я сгенерировал связующий код, используя следующую команду

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS C:\Projects\VisualStudioCode\CucumberAppium> node_modules/.bin/cucumber-js

Все хорошо, так как это создает связующий код / step, которые я добавляю в свой файл js. Мой файл js выглядит следующим образом. Это было выбрано КАК ЕСТЬ после выполнения команды cucumber- js (упомянутой выше)

const {Given,When,Then} = require('cucumber');

Given('that I am on Font Size option', function () {
    // Write code here that turns the phrase above into concrete actions
    return 'pending';
});

When('I click the default option', function () {
    // Write code here that turns the phrase above into concrete actions
    return 'pending';
});

Then('The font size should be set to default', function () {
    // Write code here that turns the phrase above into concrete actions
    return 'pending';
});

When('I click the small option', function () {
    // Write code here that turns the phrase above into concrete actions
    return 'pending';
});

Then('The font size should be set to small', function () {
    // Write code here that turns the phrase above into concrete actions
    return 'pending';
});

Я еще не добавил код, но когда я запустил это Run-> Run без отладки то самое меньшее, что я ожидаю, это НИЧЕГО - поскольку кода нет.

Но я получаю сообщение об ошибке (упомянутое ниже)

C:\Program Files (x86)\nodejs\node.exe features\steps.js\
internal/validators.js:118
    throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "from" argument must be of type string. Received undefined
    at validateString (internal/validators.js:118:11)
    at Object.relative (path.js:437:5)
    at getDefinitionLineAndUri (c:\Projects\VisualStudioCode\CucumberAppium\node_modules\cucumber\lib\support_code_library_builder\build_helpers.js:184:27)
    at buildStepDefinitionConfig (c:\Projects\VisualStudioCode\CucumberAppium\node_modules\cucumber\lib\support_code_library_builder\build_helpers.js:124:7)
    at SupportCodeLibraryBuilder.defineStep (c:\Projects\VisualStudioCode\CucumberAppium\node_modules\cucumber\lib\support_code_library_builder\index.js:51:79)
    at Object.<anonymous> (c:\Projects\VisualStudioCode\CucumberAppium\features\steps.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:1147:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1167:10)
    at Module.load (internal/modules/cjs/loader.js:996:32)
    at Function.Module._load (internal/modules/cjs/loader.js:896:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  code: 'ERR_INVALID_ARG_TYPE',
  [Symbol(originalCallSite)]: [
    CallSite {}, CallSite {},
    CallSite {}, CallSite {},
    CallSite {}, CallSite {},
    CallSite {}, CallSite {},
    CallSite {}, CallSite {},
    CallSite {}, CallSite {}
  ],
  [Symbol(mutatedCallSite)]: [
    CallSite {}, CallSite {},
    CallSite {}, CallSite {},
    CallSite {}, CallSite {},
    CallSite {}, CallSite {},
    CallSite {}, CallSite {},
    CallSite {}, CallSite {}
  ]
}

Я знаю, что может быть что-то, что я мог пропустить.

Я был бы очень рад, если бы кто-нибудь мог указать мне правильное направление.

My package.json is as follows
{
  "name": "cucumberappium",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "cucumber": "^6.0.5",
    "selenium-webdriver": "^4.0.0-alpha.7"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "description": ""
}

Спасибо!

1 Ответ

1 голос
/ 07 июня 2020

Вы должны сообщить бегуну по огурцу о местонахождении файлов определения шагов. вы можете найти хорошо реализованный проект огурца js, используя nightwatch js здесь . здесь может быть слишком много деталей, но это поможет вам понять.

...