我inheritance了一个Rails(3)应用程序,并试图掌握现有的Cucumber测试。 我在应用程序的’features’文件夹中有以下设置(我错过了任何不相关的文件,例如额外的function和步骤)

/features /people new-person.feature /step_definitions people_steps.rb web_steps.rb /support env.rb paths.rb selectors.rb 

如果我运行’rake’,它会运行features / people / new-person.feature中的所有function,正确使用step_definitions中列出的步骤。

但是,我不想每次都运行rake因为它需要太长时间,我只想在Cucumber中运行特定的测试,例如cucumber features/people/new-person.feature -l 8

当我这样做时,它运行该function但尚未加载步骤。 我得到了回复:

 Using the default profile... Feature: Add a new person In order to allocate tasks to people As a community manager I want to add a new person Scenario: Secondary navigation should contain "Add new person" # features/people/new-person.feature:8 Given I am on the new person page # features/people/new-person.feature:9 Undefined step: "I am on the new person page" (Cucumber::Undefined) features/people/new-person.feature:9:in `Given I am on the new person page' Then I should not see "Add new person" # features/people/new-person.feature:10 Undefined step: "I should not see "Add new person"" (Cucumber::Undefined) features/people/new-person.feature:10:in `Then I should not see "Add new person"' 1 scenario (1 undefined) 2 steps (2 undefined) 0m0.005s You can implement step definitions for undefined steps with these snippets: Given /^I am on the new person page$/ do pending # express the regexp above with the code you wish you had end Then /^I should not see "([^"]*)"$/ do |arg1| pending # express the regexp above with the code you wish you had end If you want snippets in a different programming language, just make sure a file with the appropriate file extension exists where cucumber looks for step definitions. 

黄瓜为什么不加载这些步骤? 我猜我需要在某个地方需要这些步骤,但我无法解决问题。


Max Williams找到了他的问题的答案:

编辑 – 找到答案,在这里: https : //rspec.lighthouseapp.com/projects/16211/tickets/401-envrb-not-loaded-when-running-individual-features-in-sub-directories

在config / cucumber.yml中有一行如下所示:

std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip"


std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} --strict --tags ~@wip --require features/"

这就像在黄瓜测试运行结束时添加--require features/并使其正确加载一切。

无论出于什么原因,我都没有更改的cucumber.yml文件。 因此,只需创建一个空白的/config/cucumber.yml文件并将其放入其中:

std_opts =“ – format#{ENV [‘CUCUMBER_FORMAT’] ||’pretty’} –strict –tags~ @ wip –require features /”

不工作。 (这并不奇怪,我认为它应该比这一行更多。)

我在这里找到了一个完整的,有效的,cucumber.yml示例文件的一个很好的例子: http : //jdfrens.blogspot.com/2010/03/uh-yes-i-did-define-that-c​​ucumber-step.html