如果黄瓜场景中的语句怎么办?

时间:2011-09-06 17:14:16

标签: ruby-on-rails cucumber

我的应用程序具有权限,并且在启用特定权限时无需运行某些测试,并且在启用相同权限时需要运行某些测试。

有办法做到这一点吗?或者我需要使用不同的框架吗?

3 个答案:

答案 0 :(得分:2)

在Cucumber中排除“测试”的标准方法是向它们添加标记以识别它们,然后在调用Cucumber时指定要包含/排除的标记。在您的示例中,您可以标记特定方案:

@needs_permission
Scenario: View users billing information

或标记整个功能:

@needs_permission
Feature: Administrative area
    Scenario: View users billing information

或标记方案大纲中的某些示例:

Scenario Outline: Visit a page
    Given I visit "<page>"

Examples: Don't need permission
    | page    |
    | index   |
    | sitemap |

@needs_permission
Examples: Do need permission
    | page  |
    | admin |

现在,当您运行Cucumber时,您可以在必要时排除这些标记:

当权限启用并且您想要运行所有测试时:

cucumber .

当权限关闭且您想要排除需要它的测试时:

cucumber . -t ~@needs_permission

我使用混合结果的另一种方法,如果你真的不提前知道,如果它不适用于当前情景,则将步骤标记为pending,例如

Given /^I visit some page which needs permission$/ do
    pending "Permissions aren't enabled - skipping" unless permissions_enabled?
end

这会将步骤标记为“待定”,这实际上意味着“未完全实现”,这并不理想,特别是如果您有许多此类步骤 - 可能很难确保其他未实现的步骤不会意外蠕变所有你故意标记的内容都隐藏起来。

答案 1 :(得分:1)

我们得到了一个类似的例子,我们有2个解决方案, 要么是建议的标签,要么是 为不同的权限类型创建不同的方案:

Given i log in as a moderator 
and there is a new post
when i view the post
Then i should see a delete button  

Given i log in as a normal user 
and there is a new post
when i view the post
Then i should not see a delete button  

答案 2 :(得分:0)

可以使用标签。没有更多细节很难说。