6

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 中的外部文档)?

4

2 回答 2

0

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

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

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

于 2014-09-13T12:35:31.790 回答
0

最后,找到了解决办法。

我正在将 Cucumber 与 Capybara 一起使用,并且我包含了所有我想在/features/support/spec/spec_helper.rb. Cucumber 自动加载此文件中的所有内容。我敢打赌,如果您不使用黄瓜,您可以在其他地方包含这些语句。

# 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

然后

在此处输入图像描述

于 2020-10-28T06:03:58.510 回答