0

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

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

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

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

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

4

1 回答 1

0

After digging around in the code, it appears that AfterConfiguration not only runs before any features are loaded, but before World is instantiated. Running self.class inside of the AfterConfig block returns NilClass. Running self.class inside of any other hook, such as a Before, will return MyWorldName. In retrospect, this makes sense as every feature is run in a separate instance of World.

This is why helpers defined as instance methods (ie def method_name) are unknown. Changing my methods to module methods (ie def ModuleName.method_name) allows them to function, since they really are module methods anyway.

于 2013-02-16T08:14:20.987 回答