在Cucumber,我有类似的东西
@do_this
@de @fr @it @us
Scenario: Do something irrelevant
Given ...
When ...
Then
@do_that
@de @fr @it @us
Scenario: Do a different irrelevant thing
Given ...
When ...
Then
可以执行cucumber -t @de -t @do_this
之类的操作,因此只会运行与两个标记匹配的方案。但是,我似乎无法在Rspec中获得相同的行为。在上面的示例中,只有第一个场景会运行,即使第二个场景也有@de
标签。
背景:我有一个在许多国家/地区推出的平台,而且并非每个国家/地区都提供所有功能。所以好处是我可以相应地标记场景,然后从命令行调用各个场景。我目前正在从Cucumber转换到Rspec,原因有几个,但这是目前阻止我的唯一因素。当然,我也对如何处理此问题提出了其他建议。
简短版本:我想在Rspec中调用匹配两个或更多标签的单个测试。
答案 0 :(得分:4)
RSpec标记表达式仅包含ORed以进行包含,ANDed用于排除,因此您通常无法执行所需操作。此外,您似乎可以在示例描述中使用 标记过滤器或过滤器,但不能同时使用两者,因此我认为将这两种技术结合使用也是如此。 (也许有人可以纠正我)。
但是,如果您的示例暗示了有限/结构化的情况,我认为您可以执行以下操作:
do
标记,其值为this
,that
等,并使用lambda
排除过滤器,该过滤器将排除所有但你想要的价值。如果您执行上述操作,则可以指定包含您想要的任何语言的示例和您想要的do
值的任何子集
但是,我怀疑有一种方法可以在命令行中指定lambda
表达式格式,所以我认为你只能使用配置选项方法。无论如何,请参阅http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/Configuration:filter_run_excluding以获取基础功能的描述。
我知道这有很多限制。这似乎是RSpec可以相当容易扩展的领域,所以也许我们将来会看到扩展。