gpt4 book ai didi

ruby-on-rails - Rspec 中的标签可以进行 AND 运算还是 OR 运算?

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:38 25 4
gpt4 key购买 nike

在 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 中匹配两个或多个标签的个别测试。

最佳答案

RSpec 标记表达式仅对包含进行 ORed,对排除进行 AND 运算,因此您通常不能做您想做的事。此外,您似乎可以使用 either 标记过滤器或示例描述过滤器,但不能同时使用这两种方法,因此我认为将这两种技术结合起来也是可行的。 (也许有人可以纠正我这一点)。

但是,如果您的示例隐含了有限/结构化的情况,我认为您可以执行以下操作:

  • 为每种语言定义一个 bool 标记并使用传统的包含过滤器
  • 定义一个 do 标签,其值为 thisthat 等,并使用 lambda 排除过滤器这将排除所有您想要的值。

如果您执行上述操作,您将能够指定示例,其中包含您想要的任何语言您想要的 do 值的任何子集

但是,我怀疑是否有一种方法可以在命令行中指定 lambda 表达式格式,因此我认为您仅限于使用配置选项方法。无论如何,请参阅 http://rubydoc.info/github/rspec/rspec-core/RSpec/Core/Configuration:filter_run_excluding获取底层功能的描述。

我知道有很多限制。这似乎是一个 RSpec 可以相当容易扩展的领域,所以也许我们将来会看到扩展。

关于ruby-on-rails - Rspec 中的标签可以进行 AND 运算还是 OR 运算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19030064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com