一个可能非常新手的问题:在Cucumber Rails web_steps.rb中,这篇文章位于顶部:
module WithinHelpers
def with_scope(locator)
locator ? within(*selector_for(locator)) { yield } : yield
end
end
World(WithinHelpers)
World(WithinHelpers)
是什么意思?从语法上讲,它看起来像是一个类/对象实例化,但在irb中,如果我粘贴这些行,则会发生错误:
1.9.3p448 :006 > World(WithinHelpers)
NoMethodError: undefined method 'World' for main:Object`
感谢您的回复。
答案 0 :(得分:0)
我将在github(e3c6afb07f)上对当前版本的黄瓜代码进行回答,因为这是我搜索最简单的版本 - 我猜你至少已经开始了版本,自web_steps has been deprecated以来不再推荐。这不会影响您的问题,只是您正在运行的内容可能与我正在查看的代码略有不同。
Cucumber::RbSupport::RbDsl
中定义的 World
is a method,可让您将模块混合到World
对象中,该对象是运行要素的上下文。 This wiki page和this blog post详细了解了发生了什么以及您可能想要使用它的原因。
它在irb中不起作用的原因是你在那个环境中没有要求黄瓜,所以Cucumber::RbSupport::RbDsl
模块没有被混合到Object
中。