Cucumber hooks可以区分标签吗
Can Cucumber hooks differentiate tags
Ruby 2. 我有一个 API 作为模块实现。它将 class 定义为
class Foo
include API
end
但它也用于扩展另一个模块 通过
module Bar
class << self
include API
end
end
我想测试 Foo 实例(例如、Foo.new.
methname)以及模块函数(例如、Bar.
methname)。
我的一个 Before
钩子将 @exemplar
定义为应应用的针对测试的默认对象。所以,问题是:我的 Before
钩子如何判断它应该使用 @exemplar = Bar
还是 @exemplar = Foo.new
?
或者,在稍微尝试一下标签之后,让我尝试一种不同的方法。如果场景标记为 @a
和 @b
,并且我有 Around('@a')
和 Around('@b')
挂钩,并且用 -t @a
、 调用黄瓜两个 挂钩都被调用。钩子代码有没有办法告诉
Around('...')
参数是什么(即,'...'
的值),以及
- 正在应用的集合中实际有哪些标签?
即,Around('@b')
钩子有什么方法可以告诉它它是针对 @b
标记表达式, 和 @b
不在 正在应用的标签列表中?
谢谢!
如果您的 feature/scenario 已标记 ...
@some_tag
Feature: My feature
@some_other_tag
Scenario: My scenario
Given ......
当给定的钩子被...应用时,您可以检索标签名称列表。
Around('@some_tag') do |scenario|
tags = scenario.source_tag_names
end
这将是 return 数组中的标签名称列表
$ tags
=> ['@some_tag', '@some_other_tag']
执行场景时调用的标签位于 Cucumber::Cli::Options 对象中。我找到了找回它的方法,但是 post 它有点伤害我的灵魂 ...
如果你运行上面的 cucumber -t @some_tag,你可以通过执行以下操作在你的钩子中获取标签......(虽然,我确定必须有更好的方法)
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 2. 我有一个 API 作为模块实现。它将 class 定义为
class Foo
include API
end
但它也用于扩展另一个模块 通过
module Bar
class << self
include API
end
end
我想测试 Foo 实例(例如、Foo.new.
methname)以及模块函数(例如、Bar.
methname)。
我的一个 Before
钩子将 @exemplar
定义为应应用的针对测试的默认对象。所以,问题是:我的 Before
钩子如何判断它应该使用 @exemplar = Bar
还是 @exemplar = Foo.new
?
或者,在稍微尝试一下标签之后,让我尝试一种不同的方法。如果场景标记为 @a
和 @b
,并且我有 Around('@a')
和 Around('@b')
挂钩,并且用 -t @a
、 调用黄瓜两个 挂钩都被调用。钩子代码有没有办法告诉
Around('...')
参数是什么(即,'...'
的值),以及- 正在应用的集合中实际有哪些标签?
即,Around('@b')
钩子有什么方法可以告诉它它是针对 @b
标记表达式, 和 @b
不在 正在应用的标签列表中?
谢谢!
如果您的 feature/scenario 已标记 ...
@some_tag
Feature: My feature
@some_other_tag
Scenario: My scenario
Given ......
当给定的钩子被...应用时,您可以检索标签名称列表。
Around('@some_tag') do |scenario|
tags = scenario.source_tag_names
end
这将是 return 数组中的标签名称列表
$ tags
=> ['@some_tag', '@some_other_tag']
执行场景时调用的标签位于 Cucumber::Cli::Options 对象中。我找到了找回它的方法,但是 post 它有点伤害我的灵魂 ...
如果你运行上面的 cucumber -t @some_tag,你可以通过执行以下操作在你的钩子中获取标签......(虽然,我确定必须有更好的方法)
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']
希望这对您有所帮助。