在RubyMine中完成Capybara代码

时间:2011-04-02 20:02:30

标签: cucumber capybara rubymine

Cucumber 的步骤定义中使用 Capybara 时,有没有办法从 RubyMine 的代码中获得一些帮助?我是 Capybara 的新手,所以不必一直检查参考站点会非常有帮助。

目前我能得到的最好的方法是明确调用Session.new,例如:

session = Capybara::Session.new(:rack_test, my_app)

这种方式Ctrl+Space session.之后显示来自 Capybara :: Session (仅)的方法,所以至少我知道它是以某种方式可达的。但这并不是我在步骤定义中真正使用 Capybara 的方式。我认为通过手动注释page来帮助类型推理引擎可以做到这一点,但我认为所有这些 DSL 魔法都无法处理。

所以基本上,是否可能有

page.<Ctrl+Space>

弹出所有公开的 DSL 方法? RubyMine API 也许吧?或者,作为替代方案,其他一些方法可以使参考文档更接近(我不认为 RubyMine 在IDE中支持外部文档)?

2 个答案:

答案 0 :(得分:0)

从RubyMine 8.0.3开始,答案是否定的,RubyMine没有在Cucumber步骤定义中的page.之后完成Capybara方法,至少在通过cucumber-rails gem将Cuyumber包含在Capybara中时是这样。 I don't see a feature request in the RubyMine issue tracker;如果他们愿意,可以添加一个。

请注意,至少黄瓜栏包括黄瓜世界中的Capybara DSL,因此您不需要在Capybara方法前键入page.。您可以将visitfill_in等称为自我方法。为了RubyMine的完成,我不会在步骤定义中想要不必要的page.

不幸的是,在您键入任何内容之前,在步骤定义中调用完成时,RubyMine也不会在其完成的名称列表中包含Capybara方法。它在你调用完成两次时完成的名称列表中包含Capybara方法(所有可用代码中的所有名称),但由于该列表太长,只有在你已经知道了你想要的方法时它才有用,或者至少是正确的前缀。

答案 1 :(得分:0)

最后,找到了解决方案。

我正在将Capcumbara与Cucumber一起使用,我在/features/support/spec/spec_helper.rb中包含了所有我想编写完整的匹配器。黄瓜将自动加载此文件中的所有内容。我敢打赌,如果您不使用黄瓜,还有其他地方可以包含这些声明。

# Needed for RubyMine code completion
include Capybara::Node::DocumentMatchers
include Capybara::Node::Matchers
include Capybara::SessionMatchers
include Capybara::RSpecMatchers
include Capybara::RSpecMatcherProxies

enter image description here

对于您的具体情况: include Capybara::DSL

然后

enter image description here