在RubyMine中完成Capybara代码

Kar*_*zak 6 rubymine cucumber capybara

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

我现在能得到的最好的是通过明确调用Session.new,例如:

session = Capybara::Session.new(:rack_test, my_app)
Run Code Online (Sandbox Code Playgroud)

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

所以基本上,它是否有可能

page.<Ctrl+Space>
Run Code Online (Sandbox Code Playgroud)

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

Dav*_*uth 0

从 RubyMine 8.0.3 开始,答案是否定的,RubyMine 不会page.在 Cucumber 步骤定义中完成 Capybara 方法,至少当 Capybara 通过 cucumber-rails gem 包含在 Cucumber 中时不会。我在 RubyMine 问题跟踪器中没有看到功能请求;如果有人愿意,可以添加一个。

请注意,cucumber-rails 至少在 Cucumber 世界中包含了 Capybara DSL,因此您无需page.在 Capybara 方法前面键入。您可以将visitfill_in等作为 self 方法调用。我不想page.仅仅为了 RubyMine 的完成而在我的步骤定义中添加不必要的内容。

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