Как установить путь к классам, тестируемым с помощью Cucumber? - PullRequest
0 голосов
/ 12 июля 2011

Я пробовал следовать двум письменным руководствам и одному видео на YouTube (http://www.youtube.com/watch?v=8ZmawOCDeyo)), и они либо пропускают важный шаг (или он просто работает для них), но не для меня.

Iсоздали следующую структуру папок:

RubyBots\
  features\
    step_definitions\
      creating_a_vehicle_for_an_ai_bot_steps.rb
    support\
      env.rb
    creating_a_vehicle_for_an_ai_bot.feature
  vehicle.rb
  vehicle_factory.rb

Содержимое creating_a_vehicle_for_an_ai_bot_steps.rb:

Given /^I have vehicle factory$/ do
  @vehicle_factory = VehicleFactory.new
end

When /^I use it to build a basic vehicle$/ do
  @new_vehicle = @vehicle_factory.build
end

Then /^I should have receive a basic vehicle$/ do
  #test @new_vechile
end

Содержимое vehicle_factory.rb:

class VehicleFactory
    def initialize(name)
        p name
    end
end

Содержимое env.rb file:

require 'vehicle_factory'
require 'vehicle'

Я выполняю Cucumber (без параметров) из окна CMD внутри каталога RubyBots и получаю следующую ошибку:

no such file to load -- vehicle_factory (LoadError)
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_require>:29:in `require'
D:/Code/RubyBots/features/support/env.rb:1:in `<top (required)>'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/rb_support/rb_language.rb:143:in `load'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/rb_support/rb_language.rb:143:in `load_code_file'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/runtime/support_code.rb:176:in `load_file'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/runtime/support_code.rb:78:in `block in load_files!'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/runtime/support_code.rb:77:in `each'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/runtime/support_code.rb:77:in `load_files!'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/runtime.rb:137:in `load_step_definitions'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/runtime.rb:39:in `run!'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/cli/main.rb:43:in `execute!'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/lib/cucumber/cli/main.rb:20:in `execute'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/cucumber-1.0.1/bin/cucumber:14:in `<top (required)>'
C:/Ruby192/bin/cucumber:19:in `load'
C:/Ruby192/bin/cucumber:19:in `<main>'

ЕслиЯ удаляю файл env.rb из каталога поддержки. При запуске Cucumber я получаю следующую ошибку:

    Scenario: Using a vehicle factory to build a basic vehicle # Features\creating_a_vehicle_for_an_ai_bot.feature:6
Given I have vehicle factory                             # Features/creating_a_vehicle_for_an_ai_bot_steps.rb:1
    uninitialized constant Object::VehicleFactory (NameError)
    ./Features/creating_a_vehicle_for_an_ai_bot_steps.rb:2:in `/^I have vehicle factory$/'
    Features\creating_a_vehicle_for_an_ai_bot.feature:7:in `Given I have vehicle factory'
When I use it to build a basic vehicle                   # Features/creating_a_vehicle_for_an_ai_bot_steps.rb:5
Then I should have receive a basic vehicle               # Features/creating_a_vehicle_for_an_ai_bot_steps.rb:9

Failing Scenarios:
cucumber Features\creating_a_vehicle_for_an_ai_bot.feature:6 # Scenario: Using a vehicle factory to build a basic vehicle

Я перепробовал все, что мог, и мой google-fu меня подводил - надеюсь, эточто-то нетривиальное, поэтому я не смущен, но легко исправить, чтобы я мог двигаться дальше! :) 1029

Спасибо за помощь!

1 Ответ

1 голос
/ 12 июля 2011

Ваш класс называется VehicleFactory, но вы пытаетесь вызвать vehicle_factory.new при создании_a_vehicle_for_an_ai_bot_steps.rb.

Кроме того, я считаю, что Cucumber ожидает определенную структуру каталогов:

RubyBots/
  features/
    step_definitions/
      creating_a_vehicle_for_an_ai_bot_steps.rb
    support/
      env.rb
    creating_a_vehicle_for_an_ai_bot.feature

Вам нужно будет соответственно требовать свои собственные файлы из env.rb.Руби не работает для вас.Один из способов автоматического запроса файлов на основе имени символа (как это делает Rails) описан в моем блоге (он основан на ActiveSupport 2.3, но должен быть аналогичным для текущей версии).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...