在 rspec 中的钩子之前与之前相同:all?

Posted

技术标签:

【中文标题】在 rspec 中的钩子之前与之前相同:all?【英文标题】:before hook in rspec same as before :all? 【发布时间】:2012-08-22 13:15:52 【问题描述】:

我想知道before(如下所示)是否与 RSpec 中的before :all 相同。有时既没有指定 :each 也没有指定 :all,这让我对 before 的实际作用感到困惑。

require 'spec_helper'

describe "this is a description" do 
  before do # vs. before :all or before :each
   # do something...
  end
end

如果有人能解释这些差异(如果有的话),我们将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

所以答案是否定的。before 等价于before :each,而不是before :all

Test example.

更新:哇,这个问题很受欢迎。为了避免认知超负荷,我建议您明确声明 :each:all

【讨论】:

我想补充一点,如果你在没有特定运行时的上下文之前嵌套,比如 before(:each) 它不会覆盖钩子之前的上层。然后你可以嵌套钩子并将代码添加到堆中,但要小心,因为这可能会给你带来问题。 我打赌这特别受欢迎,因为之前的 rspec 文档页面没有提到默认值。 relishapp.com/rspec/rspec-core/v/2-2/docs/hooks/…

以上是关于在 rspec 中的钩子之前与之前相同:all?的主要内容,如果未能解决你的问题,请参考以下文章

键盘钩子失灵

钩子教程 - 原理

2020 -02- 07组件与模板

Hook(钩子技术)基本知识讲解,原理

确保Drupal模块中的钩子在其他钩子之前运行。

DLL注入-Windows消息钩取