开发者

Uninitialized constant (NameError) problem - how to include a class?

开发者 https://www.devze.com 2023-01-30 14:25 出处:网络
Here is my directory structure: /features/ninja.fe开发者_如何学Cature /features/step_definitions/ninja_steps.rb

Here is my directory structure:

/features/ninja.fe开发者_如何学Cature
/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.


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. :)


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'
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号