这是一个简单的问题。我有黄瓜步骤,例如:
Given /We have the test environment/ do
@user = # Create User model instance
@post = # Create Post model instance
# etc...
end
Run Code Online (Sandbox Code Playgroud)
在我使用自己的类的Then步骤中,它们简化了测试过程:
Then /all should be fine/ do
# MyValidatorClass has been defined somwhere in features/support dir
validator = MyValidatorClass.new
validator.valid?.should be_true
end
Run Code Online (Sandbox Code Playgroud)
在 MyValidatorClass 实例内部,我处理了上面的实例变量@user、@post 等。
从 MyValidatorClass 类实例访问 Cucumber 变量的最佳和最简单的方法是什么?
class MyValidatorClass
def valid?
@post
@user
end
end
Run Code Online (Sandbox Code Playgroud)
现在我已经手动将所有参数传递给 MyValidatorClass 实例:
validator = MyValidatorClass.new @user, @post
Run Code Online (Sandbox Code Playgroud)
但我认为这个目的很糟糕。我需要更透明的东西,因为我们使用的是 Ruby,这就是为什么!
做这个的最好方式是什么?
我已经找到了可能的灵魂。您应该从实例变量迁移到类变量:
Given /We have the test environment/ do
@@user = # Create User model instance
@@post = # Create Post model instance
# etc...
end
Then /all should be fine/ do
# MyValidatorClass has been defined somwhere in features/support dir
validator = MyValidatorClass.new
validator.valid?.should be_true
end
...
class MyValidatorClass
def valid?
@@post
@@user
end
end
Run Code Online (Sandbox Code Playgroud)