【发布时间】:2016-01-20 18:37:28
【问题描述】:
我对 Rspec 有点陌生,当有问题出现时,我正在编写一些测试示例。
首先,我使用全局变量来定义三个常量值,我将在很多测试中使用。例如:
$message = 'this is a test'
但是,我注意到这个全局变量被转移到其他测试文件并导致问题。好的......然后决定避免使用全局变量,因为如果我的测试文件数量增加,这可能会在未来造成很多痛苦。
然后我去了 let() 块。示例:
let(:message) { 'this is a test' }
现在的问题是这个变量不能在钩子前后使用。好的...
我最后一次尝试是在上下文/描述中使用常量,如下所示:
self::MESSAGE = 'this is a test'
但是,就像 let's this 一样,它不能在钩子中使用,因为它们既不是类也不是模块。
所以,我被困住了......
你们是怎么处理的?我需要为此创建实例变量吗?这是我可以使用的任何其他替代方案吗?
非常感谢。
【问题讨论】:
-
需要明确的是,
let值 可以在before(:each)和after(:each)块中使用。它们不能在before(:all)块中使用。总的来说,我认为before(:all)块是代码异味,因此将测试重构为仅使用before(:each)块可能会解决此问题。 -
好的,是的...我仍在掌握测试的最佳方法,因此我会考虑您的建议!谢谢!