Cucumber Rubymine无法找到位于宝石内部的步骤定义

Cucumber Rubymine无法找到位于宝石内部的步骤定义,cucumber,watir,rubymine,Cucumber,Watir,Rubymine,Rubymine返回此场景中两个步骤的“未定义步骤参考”警报。这个黄瓜测试是这样的: @smoke Scenario: Update profile Smoke test. Given I navigate to this test webpage And In Test, I click the element of "test_link" 这两个步骤位于gem内部,遵循以下结构: gemname/lib/features/step_definitions/web_

Rubymine返回此场景中两个步骤的“未定义步骤参考”警报。这个黄瓜测试是这样的:

 @smoke
  Scenario: Update profile Smoke test.
    Given I navigate to this test webpage
      And In Test, I click the element of "test_link"
这两个步骤位于gem内部,遵循以下结构: gemname/lib/features/step_definitions/web_shared_steps.rb

And (/^I navigate to this (.*?)$/) do |web|
  web = '$' + web.downcase.gsub(' ', '_')
  @browser.goto eval(web)
end

Then (/In (.*?), I click the element of "(.*?)"$/) do |page, element|
  on_page(page + 'Page').click_element(element)
end
方法也在gem中,遵循以下结构: gemname/lib/basic_methods.rb

module BasicMethods

  include PageObject
  include PageObject::PageFactory


  def click_element (element)
    element = element.downcase.gsub(' ', '_')
    wait_until{send("#{element}?")}

    select = send("#{element}_element")
    wait_until{select.visible?}

    select.click
  end
因此,如果我使用命令行“bundle exec cumber”执行,测试就能够在gem中找到步骤定义,在gem中找到方法,并且一切都正确执行

但是,对于场景的两个步骤,Rubymine仍然发出“未定义步骤参考”的警报,我无法在这些步骤中“单击命令”以导航到步骤定义


问题:由于测试正在进行,如何才能“告诉”Rubymine它必须在哪里搜索步骤定义的文件夹/位置?

我没有Rubymine,所以我无法验证这个答案,但这听起来与我在Vim下使用Syntastic时遇到的问题非常相似

尝试创建名为
features/support/external.rb的文件,其中包含:

require "lib/features/step_definitions/web_shared_steps.rb"
实际上,它不必被称为
external.rb
,它可以被称为除
env.rb
之外的任何东西


我猜Rubymine用
--dry run
选项调用cucumber来生成警告。有关详细信息,请参阅。

尝试将gem源代码放在您的计算机上,然后将其添加到您的gem文件中
gem'gem',:path=>path/to/gem source'

我在尝试使用自己的宝石叉时遇到了类似的问题
当我使用
gem'my gem',:git=>'my repo.git'
时,我遇到了与您相同的问题,但通过使用
:path
我让rubyMine识别了我的步骤定义


我需要在生产环境中切换回
:git
,但至少我有一个适合我的开发环境的解决方案。gem中的步骤定义是不寻常的。可能有助于说明gem如何需要步骤定义。为了让他们工作,除了把宝石放进你的Gemfile中,你还需要做什么吗?很抱歉没有早点回答。是的,只需下载gem,就可以获取步骤定义。问题是我的IDE:Rubymine。他们有一些“硬编码的东西”,只允许少数著名的gem识别gems中包含的步骤定义。对于其余的Gem,步骤定义显示为“不存在”,即使它存在并且一切正常。我打赌这将对JetBrains提出一个很好的支持请求。这对我来说很有效,但不是最佳的,我必须记住每次提交编辑Gem文件之前的时间