【问题标题】: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 创建对您的私有模块的引用
- 使用您的步骤定义创建一个私有模块
- 在 step_definitions 文件夹中创建一个文件 'whatever.js'
- 在该文件类型中: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 中传递的源文件无关。