在web_steps.rb中,World(WithinHelpers)是什么意思?

时间:2013-11-23 22:04:53

标签: ruby-on-rails cucumber

一个可能非常新手的问题:在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`

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

我将在github(e3c6afb07f)上对当前版本的黄瓜代码进行回答,因为这是我搜索最简单的版本 - 我猜你至少已经开始了版本,自web_steps has been deprecated以来不再推荐。这不会影响您的问题,只是您正在运行的内容可能与我正在查看的代码略有不同。

Cucumber::RbSupport::RbDsl中定义的

World is a method,可让您将模块混合到World对象中,该对象是运行要素的上下文。 This wiki pagethis blog post详细了解了发生了什么以及您可能想要使用它的原因。

它在irb中不起作用的原因是你在那个环境中没有要求黄瓜,所以Cucumber::RbSupport::RbDsl模块没有被混合到Object中。