如何根据正在执行的特征文件加载Cucumber步骤定义

时间:2010-10-22 10:03:09

标签: ruby-on-rails open-source cucumber bdd gherkin

我想修改黄瓜,以便在执行给定功能时(比如“login.feature”),我只想为web步骤加载login_steps.rb。不应加载其他步骤文件。

IMO这对于采用相同的步骤非常有用,但在执行工作方面与正在执行的功能名称有所不同。

由于我有将近一百个场景,我更倾向于这些步骤是高级步骤,这是有道理的。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

目前,实现这一目标的唯一方法(缺少修补黄瓜本身)是将每个功能放入一个单独的目录树中,该目录树具有自己的env.rb文件和step_definitions目录。

有关详细信息,请参阅邮件列表中的this post

答案 1 :(得分:1)

您可以使用Cellophane gem来实现这样的目标。它支持嵌套的步骤定义,您可以关闭查找共享步骤。我不确定这会让你一直到达你想去的地方,但我发现如果可以修改玻璃纸以获得你想要的东西,那么开发人员会非常敏感。

答案 2 :(得分:0)

以下是您的示例代码,

.feature文件

Scenario: Some description of the scenario
Given [some context]
When [some event]
Then [outcome]

.rb(红宝石中的步骤定义)

Given /^[some context]$/ do
// code module
// code module
end
  • 只要[some context]出现在要素文件中,就会执行此步骤定义。

说,

Given [some context]
When [some context]
Then [some context]
And [some context]

将执行相同的操作。即给定,何时,然后和而且是通用的。

<小时/> 此外,您可以阅读behat文档以便更好地理解 - http://behat.readthedocs.org/