释放使用After块的Cucumber- * gem

时间:2011-10-12 15:34:48

标签: ruby-on-rails gem cucumber capybara

我已经为场景故障制作了一个简单的Gem来为Capybara Webkit做截图,它还保存了当前页面的HTML文件,无论你使用的是哪个Capybara驱动程序。但是,我遇到了一个我无法看到的问题,即每当调用Gem中的代码时,page.body为空。但是,当我在Rails应用程序中使用完全相同的代码时,page.body不为空。

gem代码在https://github.com/mattheworiordan/capybara-screenshot

的Github上

如果您看一下,您会看到我有一个lib/capybara-screenshot/world.rb文件,可以访问page.body并保存内容。问题是,当Gem访问page.body,page.body为空并且只包含: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 我在gem's lib root file中包含了world.rb,所以我无法真正看到我做错了什么。

奇怪的是,如果我将一个后块放入我的sample Rails app env.js file访问页面.body有正确的HTML,所以看起来在页面释放后调用Gem中的{my code}之后正在执行。

gem代码位于https://github.com/mattheworiordan/capybara-screenshot,gem位于https://rubygems.org/gems/capybara-screenshot。您可以通过简单地运行黄瓜来快速重新创建此问题的示例Rails应用程序位于https://github.com/mattheworiordan/capybara-screenshot-test

我觉得答案很简单,但由于某些原因我看不到它。我感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

Joe Ferris在Thoughtbot上指出了我正确的方向,并指出你需要确保在Capybara之后加载After hook,所以我需要确保需要我依赖的任何文件。在这种情况下,我需要要求水豚/黄瓜。

您可以在https://github.com/mattheworiordan/capybara-screenshot

看到工作宝石