【问题标题】:Cucumber's AfterConfiguration can't access helper modulesCucumber 的 AfterConfiguration 无法访问辅助模块
【发布时间】:2013-02-16 16:14:20
【问题描述】:

我有一个没有数据库的模块化 Sinatra 应用程序,为了测试 memcache,我有一些需要在文件系统上创建和删除的测试文件。我想使用一些辅助方法(在与 rspec 共享的模块中,还需要创建/删除这些文件进行测试)在 AfterConfiguration 挂钩中生成这些文件。我只想在 Cucumber 开始时创建一次。

我似乎无法从位于“support/hooks.rb”中的 AfterConfiguration 中访问帮助程序。可以从 Cucumber 的步骤中访问帮助程序,因此我知道它们已正确加载。

这之前的帖子好像有答案了:Want to load seed data before running cucumber

这个答案中的第二个例子似乎是说我的模块应该可以被我的 AfterConfiguration 块访问,但是当我尝试调用辅助方法“foo”时,我得到“undefined method `foo' for nil:NilClass”。

我可以将所有内容提取到 rakefile 中并以这种方式运行,但我想知道我在这里缺少什么。

【问题讨论】:

    标签: sinatra cucumber


    【解决方案1】:

    在代码中挖掘之后,似乎 AfterConfiguration 不仅在加载任何功能之前运行,而且在 World 实例化之前运行。在 AfterConfig 块内运行 self.class 会返回 NilClass。在任何其他钩子(例如 Before)中运行 self.class 将返回 MyWorldName。回想起来,这是有道理的,因为每个功能都在单独的 World 实例中运行。

    这就是为什么定义为实例方法(即 def method_name)的助手是未知的。将我的方法更改为模块方法(即 def ModuleName.method_name)允许它们运行,因为它们确实是模块方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多