RubyMine 无法识别“it_behaves_like”方法

RubyMine doesn't recognize `it_behaves_like` method

当我打开像 it_behaves_like 这样的规范时,RubyMine 无法识别方法并显示错误消息 can't find 'it_behaves_like'

RSpec 测试本身工作正常,所以不知何故 RubyMine 找不到方法。

在首选项中列出 rspec-rails

如何找到问题所在?

编辑

似乎RubyMine无法识别动态定义的方法。

https://youtrack.jetbrains.com/issue/RUBY-13950

是的,RubyMine,即使是最新版本也无法识别这些生成的方法。不过,您可以选择 "tricking" RubyMine 来识别它。只需将以下空方法添加到 spec_helper.rb:

的末尾
def it_behaves_like(*args) ; end

这将使 RubyMine 看到一个具有正确签名的方法,但它仍会被 rspec 覆盖,因此它不会影响您的测试。

更好的是,您可以将它放在 spec_helper.rb 的要求中,例如rubymine_signatures.rb

require 'rubymine_signatures'

但是,无论它放在哪里,它仍然会污染您的代码库 'fix' IDE,我不建议这样做。虽然只是为了测试,但还是可以防御的。