我应该在Cucumber Ruby框架中定义method_missing在哪里?

时间:2016-08-31 09:01:51

标签: ruby cucumber metaprogramming method-missing

我有一个Ruby-Cucumber框架。我需要使用方法method_missing来避免编写一些重复的函数。我应该在哪里放置method_missing?在.rb文件夹下的任何support文件中?或者它应该进入一些不同的特定文件?

1 个答案:

答案 0 :(得分:1)

method_missing目录的.rb文件中以及随后传递给the Cucumber World的模块中,像任何Cucumber帮助方法一样定义support

module MethodMissing
  def method_missing(method)
    puts "You said #{method}"
  end
end
World MethodMissing

然后,您可以在步骤定义中调用缺少的方法。

与任何Cucumber辅助方法一样,method_missing只应在黄瓜World上定义。如果您在支持文件的顶层定义它,它将在Ruby顶级对象上定义,并且可以在任何地方使用,这是不显着的,可能会破坏其他代码。

我故意不遵从super,因为World没有定义method_missing,或定义respond_to_missing?,因为我没有&#39 ; t有任何计划在method(:foo)上致电World,但如果您希望在定义method_missing时始终执行此操作,则可以执行这些操作。