RSpec之前/之后混淆

时间:2015-03-31 20:55:52

标签: ruby-on-rails ruby rspec

我已经和RSpec 3合作了几天,我意识到我并不完全理解所提供的前/后挂钩。

我的困惑在于两个方面 -

  1. 可用的各种挂钩参数 - :suite:context:example:all:each(我错过了吗?)。前3个似乎是新的,因为我只见过最后两个。现在最后两个是否被弃用并被其他人取代?
  2. 上述每个范围涵盖的范围 -
    • 我猜测before(:context)before(:example)在每个context块和单个示例之前运行一次。
    • before(:suite)文件中的所有示例之前_spec运行一次吗?
    • 每个before(:xxx)块是否仅适用于其自己的嵌套级别及以下的上下文和示例?
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

根据documentation:context:example在rspec3中的别名为:all:each

  

注意::example和:context作用域也可用作:each和   :所有,分别。使用您喜欢的任何一种。

首先执行before :suite范围,然后执行:context:example范围:

before :suite
before :context
before :example
after  :example
after  :context
after  :suite

除此之外,我建议阅读文档,其中包括特定测试场景的工作示例。