【问题标题】:Specifying step definition path in Webstorm在 Webstorm 中指定步骤定义路径
【发布时间】:2016-01-25 21:47:57
【问题描述】:

我目前正在使用 Protractor 和 Cucumber.js 在 Angular 应用程序上运行自动化测试。我使用 Webstorm 和两个插件,Cucumber.js 和 Gherkin。

我遇到的问题是尝试为步骤定义目录指定唯一位置时。感觉我有多个项目使用一些相同的步骤定义,我希望能够消除重复的代码并将这些步骤定义拉到一个公共/共享目录中。

我能够让我的代码正常工作,但 Gherkin/Cucumber.js 插件无法识别步骤定义的位置。这会带走许多有用的突出显示和文件定位工具。那么,有没有人遇到过这个问题,或者有没有人知道我可以如何指定自定义步骤定义位置?

【问题讨论】:

    标签: angularjs protractor webstorm gherkin cucumberjs


    【解决方案1】:

    WebStorm 无法识别您的步骤。而是创建一个符号链接。

    两种选择:

    1 创建对您的私有模块的引用

    1. 使用您的步骤定义创建一个私有模块
    2. 在 step_definitions 文件夹中创建一个文件 'whatever.js'
    3. 在该文件类型中:module.exports = require('myPrivateModule');

    2 创建一个从您的私有模块到您的 step_definitions 文件夹的符号链接

    我更喜欢第二个选项,因为 WebStorm 能够以这种方式识别步骤并删除未知步骤定义突出显示。

    【讨论】:

      【解决方案2】:

      考虑以下目录结构:

      test/componentA/first.feature
      test/componentA/step_definitions/firstFeaturesSteps.js
      test/componentB/second.feature
      test/componentB/step_definitions/secondFeaturesSteps.js
      test/step_definitions/someCommonSteps.js
      

      如果 protractor.conf.js(或你命名的 wtv)有,则测试应该成功匹配

      cucumberOpts: {
          require: ['test/**/step_definitions/**/*Steps.js'],
          format: 'pretty'
      }
      

      如果您使用的是 WebStorm 或 IDEA,那么如果您将步骤定义放在“step_definitions”目录中,那么自动完成和 ctrl-click 魔法就会起作用。您应该能够按住 .feature 的步骤以获取步骤定义...即使 first.feature 中的步骤与 commonSteps.js 或 secondFeaturesSteps.js 中的步骤定义匹配。 IDE 似乎只知道 Steps 在 step_definition 目录中的位置,并且与 cucumberOpts.require 中传递的源文件无关。

      【讨论】:

        猜你喜欢
        • 2018-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多