Uninitialized constant (NameError) problem - how t

2019-04-14 00:51发布

Here is my directory structure:

/features/ninja.feature
/features/step_definitions/ninja_steps.rb
/src/ninja.rb

When I run

cucumber

in the root of my project, I get an uninitialized string constant Ninja (NameError) error. I've determined it's caused by this line in my ninja_steps.rb file:

@ninja = Ninja.new :belt_level => belt_level

In my ninja.rb file:

class Ninja
  def initialize (belt_level)
  end
end

Do I need to add some sort of require at the top of my ninja_steps.rb file, or what? I can't seem to figure out how to do that so that it doesn't bomb out.

标签: ruby cucumber
2条回答
Explosion°爆炸
2楼-- · 2019-04-14 01:14

Did you try adding an include at the top of the ninja_steps? Something like

require File.expand_path(File.dirname(__FILE__) + "/../../src/ninja")

should do the trick. Otherwise, cucumber has no idea what a Ninja is. :)

查看更多
趁早两清
3楼-- · 2019-04-14 01:27

To load all those files in a slightly different way than Bill Turner suggests, taking a hint from projects like cucumber/aruba:

https://github.com/cucumber/aruba/blob/master/features/support/env.rb

# env.rb
# add your src dir to the load path
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../../src')
require 'ninja'
查看更多
登录 后发表回答