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它必须搜索步骤定义的文件夹/位置?
答案 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
,但至少我有我的开发环境的解决方案