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

时间:2014-07-10 20:57:26

标签: 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 /特征/ 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 cucumber"执行,测试能够找到gem中的步骤定义,以及gem中的方法,并且一切都正确执行。 / p>

但是,Rubymine仍在警告" Undefined Step reference"对于场景的两个步骤,我无法"命令点击"在这些步骤中,以导航到步骤定义。

问题:自从测试工作以来,怎么可能告诉" Rubymine它必须搜索步骤定义的文件夹/位置?

2 个答案:

答案 0 :(得分:0)

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

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

require "lib/features/step_definitions/web_shared_steps.rb"

实际上它不必被称为external.rb,除了env.rb之外,它可以被称为任何东西。

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

答案 1 :(得分:0)

尝试将宝石源放在您的机器上,然后将其添加到您的宝石文件中 gem 'gem', :path => 'path/to/gem-source'

我尝试使用自己的宝石叉时遇到了类似的问题 当我gem 'my-gem', :git => 'my-repo.git'时,我遇到了与你相同的问题,但是使用:path我得到了rubyMine以识别我的步骤定义。

我需要在生产中切换回:git,但至少我有我的开发环境的解决方案