使用黄瓜时,我引用步骤定义中使用的实例变量,例如
Given /^I have an instance variable in my step$/ do
@person.should_not be_nil
end
使用Before hook例如
在我的env.rb中使用getterclass Person
def be_happy
puts "smiling"
end
end
person = Person.new
Before do
@person = person
end
到目前为止一切都很好......
但是如果我想使用一个Around钩子,我的理解是它产生一个proc,我可以从中调用该步骤中的块。
Around do |scenario, block|
@person = person
block.call
end
但这失败了,因为@person是零。这是因为@person在创建proc时被实例化,因此无法修改。有没有办法做到这一点?
答案 0 :(得分:0)
想到两个解决方案
使用世界
尝试使用World,也许在env.rb中使用类似的东西:
class Person
def be_happy
puts "smiling"
end
end
World do
Person.new
end
Around do |scenario, block|
block.call
end
然后你的步骤def应该做更像的事情:
Given /^I have an instance variable in my step$/ do
be_happy.should eql("smiling")
end
通过这种方法,您可以在每个场景中获得一个新的分支,这可能是一件好事。
使用常量 如果您不想为每个场景使用全新的Person,只需使用常量,也许是这样:
class Person
def be_happy
"smiling"
end
end
MyPerson = Person.new
Around do |scenario, block|
block.call
end
步骤def如此:
Given /^I have an instance variable in my step$/ do
MyPerson.be_happy.should eql("smiling")
end