我是Rspec的新手,当我提出问题时,我正在编写一些测试示例。
首先,我使用全局变量来定义我将在许多测试中使用的三个常量值。例如:
$message = 'this is a test'
但是,我注意到这个全局被转移到其他测试文件并导致问题。好的......然后决定避免使用全局变量,因为如果我的测试文件数量增加,将来会导致很多痛苦。
然后我去了let()块。例如:
let(:message) { 'this is a test' }
现在问题是这个变量不能在钩子之前和之后使用。好的...
我的最后一次尝试是使用上下文/描述中的常量,如下所示:
self::MESSAGE = 'this is a test'
然而,就像我们不能在钩子里面使用它一样,因为它们不是类或模块。
所以,我被卡住了......
你们是如何处理的?我需要为此创建实例变量吗?这是我可以使用的其他替代方案吗?
非常感谢。
答案 0 :(得分:0)
您还有另一个用于定义数据的选项 - 实例变量。
before do
@data = [ {one: 1, two: 2},
{one: 2, two: 3} ]
end
您可以在before
范围内的所有测试中使用@data。这与let
几乎完全相同,仅用于设置静态数据,但它可能更适合您 - 如果没有看到您的代码,则很难说。