I have a helper object that I’d like to have available inside each of
my story steps, but would like to declare it outside all the steps.
(It knows how to create various objects in my library, then stores a
string reference to it for later steps to refer to.)
Problem is, I’ve tried assigning to a module variable both inside and
outside my steps_for block, and I get an error that the variable
hasn’t been previously assigned when I reference it within a step
block. To get it to work, I have to create the object within a step
block:
steps_for(:all) do
#TODO: This is a total kludge.
Given /an environment/ do
@om = ObjectManager.new
@environment = @om.resolve_objects(“an environment”).first
def add_to_environment(object)
@environment << object
object
end
@om.on_create(“target”) {add_to_environment Creature.new}
@om.on_create(“creature”) {add_to_environment Creature.new}
@om.on_create(“game object”) {add_to_environment GameObject.new}
end
Given /(an? (?:creature|game object|target))/i do |subject|
@om.resolve_objects(subject)
end
…
…meaning I have to begin each story with “Given an environment”,
whether that’s appropriate to the story or not.
Is there some equivalent to before(:all) that I can use within
stories? Or failing that, how else can I create a module variable in
the context that the step blocks run within? (I’d prefer to avoid
global variables, of course.) Many thanks for any advice!
-Jay McGavren
http://jay.mcgavren.com/zyps