Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cucumber RubyMine中的水豚代码完成_Cucumber_Capybara_Rubymine - Fatal编程技术网

Cucumber RubyMine中的水豚代码完成

Cucumber RubyMine中的水豚代码完成,cucumber,capybara,rubymine,Cucumber,Capybara,Rubymine,在Cucumber的步骤定义中使用Capybara时,有没有办法从RubyMine的代码完成中获得一些帮助?我是水豚的新手,所以不必一直查看参考网站会非常有帮助 目前我能得到的最好的方法是显式调用Session.new,类似于: session = Capybara::Session.new(:rack_test, my_app) 通过这种方式,Ctrl+Space在会话之后。显示了来自Capybara::session(仅限)的方法,因此至少我知道它是可以到达的。但这并不是我在步骤定义中真正

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

目前我能得到的最好的方法是显式调用
Session.new
,类似于:

session = Capybara::Session.new(:rack_test, my_app)
通过这种方式,
Ctrl+Space
会话之后。
显示了来自Capybara::session(仅限)的方法,因此至少我知道它是可以到达的。但这并不是我在步骤定义中真正使用水豚的方式。我认为通过手动注释
page
来帮助类型推理引擎可以达到目的,但我认为所有这些DSL魔术都太难处理了

那么基本上,有没有可能

page.<Ctrl+Space>
页面。

弹出所有暴露的DSL方法?大概或者,作为一种替代方法,使用其他方法使参考文档更接近(我认为RubyMine还不支持IDE中的外部文档)

从RubyMine 8.0.3开始,答案是否定的,RubyMine没有按照
页面完成Capybara方法。
在Cucumber步骤定义中,至少当水豚通过黄瓜轨宝石被包含在黄瓜中时不会;有人可以添加一个,如果他们喜欢的话

请注意,cucumber rails至少在cucumber世界中包括了Capybara DSL,因此您不需要在Capybara方法前面键入
page.
。您只需调用
visit
fill_in
,等等作为self方法即可。我不想为了RubyMine完成而在步骤定义中使用不必要的
页面。


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

最后,找到了一个解决方案

我将Cucumber与Capybara一起使用,并且我在
/features/support/spec/spec\u helper.rb
中包含了我想要编码完成的所有匹配器。Cucumber自动加载此文件中的所有内容。我打赌如果你不使用cucumber,还有其他地方可以包含这些语句

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

针对您的具体情况:
包括水豚::DSL

然后


几乎不可能为ruby等动态语言创建良好的代码完成。您可以创建一组有用的代码模板来代替代码完成。大多数有用的Capybara方法都有简短的名称。为什么您需要为它们完成代码?您使用的是什么rubymine版本。Rubymine 6改进了提示性文本。但是luacassus是对的,它并不完美。在撰写本文时,我认为它可能是3.0版-现在还不确定。我最近在Ruby方面做得不多,所以从那时起可能发生了很多变化。