gpt4 book ai didi

ruby - Cucumber hooks可以区分标签吗

转载 作者:行者123 更新时间:2023-11-28 21:28:27 26 4
gpt4 key购买 nike

Ruby 2。我有一个实现为模块的 API。它定义一个类就像

class Foo
include API
end

但它也用于扩展另一个模块通过

module Bar
class << self
include API
end
end

我想测试 Foo 实例(例如Foo.new.methname)和模块函数的行为(例如Bar.methname)。

我的一个 Before 钩子(Hook)将 @exemplar 定义为应应用的针对测试的默认对象。所以,问题是:我的 Before 钩子(Hook)如何判断它应该使用 @exemplar = Bar 还是 @exemplar = Foo.new

或者,在稍微尝试一下标签之后,让我尝试一种不同的方法。如果一个场景被标记为 @a@b,我有 Around('@a')Around(' @b') 钩子(Hook),用 -t @a 调用 cucumber,两个 钩子(Hook)都被调用。钩子(Hook)代码有没有办法告诉

  1. Around('...') 参数是什么('...' 的值),和
  2. 实际应用的标签集中有哪些标签?

I.e.Around('@b') 钩子(Hook)有什么方法可以告诉它它是针对 @b 标记表达式的, @b 正在应用的标签列表中?

谢谢!

最佳答案

如果你有你的功能/场景标记......

@some_tag
Feature: My feature

@some_other_tag
Scenario: My scenario
Given ......

当...应用给定的钩子(Hook)时,您可以检索标签名称列表

Around('@some_tag') do |scenario|
tags = scenario.source_tag_names
end

这将返回数组中的标签名称列表

$ tags
=> ['@some_tag', '@some_other_tag']

执行场景时调用的标记位于 Cucumber::Cli::Options 对象中。我找到了找回它的方法,但是发布它有点伤我的灵魂......

如果你用 cucumber -t @some_tag 运行上面的代码,你可以通过执行以下操作来获取你的钩子(Hook)中的标签......(虽然,我相信一定有更好的方法)

Around('@some_tag') do |scenario|
tags = scenario.source_tag_names
options = Array.new puts
executed_tag = options.last.config.tag_expressions
end

$ tags
=> ['@some_tag', '@some_other_tag']
$ executed_tag
=> ['@some_tag']

希望这对您有所帮助。

关于ruby - Cucumber hooks可以区分标签吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32232683/

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