ruby-on-rails - Cucumber场景下的if语句怎么做?

标签 ruby-on-rails cucumber

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

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

最佳答案

在 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

如果您确实提前不知道,我使用的另一种结果混合结果是,如果某个步骤不适用于当前场景(例如,

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

这会将步骤标记为“待处理”,这实际上意味着“未完全实现”,这并不理想,特别是如果您有很多这样的步骤 - 可能很难确保其他未实现的步骤不会意外蔓延并被您故意标记的所有内容隐藏。

关于ruby-on-rails - Cucumber场景下的if语句怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7323608/

相关文章:

protractor - 为 cucumber html-reporter 截屏的函数生成 "function timed out after 5000.."错误

ruby-on-rails - 如何调用 db :migrate:up as part of another rake task

ruby-on-rails - 我们如何使用 ActiveRecord 从连接表中删除行?

ruby-on-rails - 如何为生产环境运行docker compose

ruby-on-rails - Rails Bundler gems 安装

java - Cucumber 无法识别定义的步骤 "Undefined Steps"

ruby-on-rails - Cucumber 将 pdf 读入临时文件

ruby-on-rails - 如何使用 Devise 设置电子邮件确认?

javascript - 如何设置 cucumber 环境变量

ruby-on-rails - 是否可以根据使用(或不使用)的标签在 Cucumber 步骤中执行不同的操作?