Cucumber namespace problem


#1

Hi

I am having an issue with Cucumber where I am writing in one files
some steps where rspec matcher do not seem to be accessible.

So I have a file with my steps written like this

require ‘steputils’

Given "some step description 1 " do
SomeClass.post(args)
end

Given "some step description 2 that is slighty different for better
readability " do
SomeClass.post(args)
end

and in steputils I have

class Steputils

def self.post(args)
args.should_not be_empty
end
end

But the code breaks when trying to run args.should_not be_empty that
are valid rspec matchers… Seems like it is not recognizing it. I
tried to include Cucumber and Spec as part of my class
but still not working. Any idea what I need to do to make it work?
This will help refactoring some of the steps that may have similar code

Also, is there a way to see all the existing step using the cucumber
methods? because when you have a lot it would be nice to have a way to
describe them for documentation purpose (like Rake does for task)

Thanks

Emmanuel


#2

On Fri, Jan 2, 2009 at 7:20 PM, Emmanuel P. removed_email_address@domain.invalid
wrote:

   SomeClass.post(args)

class Steputils

   def self.post(args)
           args.should_not be_empty
   end

end

But the code breaks when trying to run args.should_not be_empty that are
valid rspec matchers… Seems like it is not recognizing it. I tried to
include Cucumber and Spec as part of my class

Please post the full error message and backtrace.

Did you require ‘spec’ in your support/env.rb file?

Aslak


#3

On Fri, Jan 2, 2009 at 1:20 PM, Emmanuel P. removed_email_address@domain.invalid
wrote:

   SomeClass.post(args)

end
Is that code right? It looks to me like Steputils.post is never
getting called. You’re calling SomeClass.post instead.

Peter


#4

I think I found a solution to my problem. in the Steputils class,
instead of including, I perform an extend on Spec::Matcher
so my class look like

class Steputils

extend Spec::Matchers

   def self.post(args)
           args.should_not be_empty
   end

end

Now all the Matcher are visible in my class and tests are running
fine again

Thanks

Emmanuel


#5

Sorry, I made up the example to explain my problem but yes, it should
be Steputils. post in each of the steps.

But the problem was calling a spec matcher within that class. My
solution to get it i to work is to extend my class with Spec::Matcher

Thanks

Emmanuel


#6

On Fri, Jan 2, 2009 at 2:04 PM, aidy lewis removed_email_address@domain.invalid
wrote:

Hi Aslak,

2009/1/2 aslak hellesoy removed_email_address@domain.invalid:

Did you require ‘spec’ in your support/env.rb file?

Is it now a standard to put the env.rb in the ‘support’ folder? Mine
is in the ‘steps’ folder?

That’s the direction, yes.

features/step_definitions #for step definitions
features/support #for everything else


#7

On Fri, Jan 2, 2009 at 9:11 PM, David C.
removed_email_address@domain.invalidwrote:

You can keep it wherever you want, but a recent new feature is that ruby
files in the support dir get loaded before any other dir.
This is needed in some cases. See History.txt on GitHub.


#8

Hi Aslak,

2009/1/2 aslak hellesoy removed_email_address@domain.invalid:

Did you require ‘spec’ in your support/env.rb file?

Is it now a standard to put the env.rb in the ‘support’ folder? Mine
is in the ‘steps’ folder?

Regards

Aidy