在 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中支持外部文档)?
答案 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.
。您可以将visit
,fill_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
对于您的具体情况:
include Capybara::DSL
然后