【发布时间】:2011-07-18 14:09:14
【问题描述】:
我倾向于使用 before 块来设置实例变量。然后我在我的示例中使用这些变量。我最近遇到了let()。根据 RSpec 文档,它用于
... 定义一个记忆化的辅助方法。该值将在同一示例中的多个调用中缓存,但不会跨示例缓存。
这与在 before 块中使用实例变量有何不同?还有什么时候应该使用let() vs before()?
【问题讨论】:
-
让块被延迟评估,而 before 块在每个示例之前运行(它们总体上较慢)。使用 before 块取决于个人喜好(编码风格、模拟/存根......)。 Let 块通常是首选。可以查看更详细的info about let
-
在 before 钩子中设置实例变量不是一个好习惯。查看betterspecs.org