【问题标题】:Clearing class instance variables in between Rspec examples清除 Rspec 示例之间的类实例变量
【发布时间】:2011-10-26 07:31:07
【问题描述】:

我正在为我的一个扩展 ActiveRecord 的 gem 编写规范。它必须做的一件事就是像这样设置一个类实例变量:

class MyModel < ActiveRecord::Base
  @foo = "asd"
end

现在,当我将 @foo 设置为一个 it "should" {} 时,它会持续到下一个。我知道这是正常的 Ruby 行为,但我认为 RSpec 有一些魔法可以清除规范之间的所有内容。我想知道如何在所有测试中重复使用单个 AR 模型(因为创建一堆表会很痛苦),同时确保在每次测试之间清除 @foo。我需要手动执行此操作吗?

【问题讨论】:

  • “我认为 RSpec 有一些魔法可以清除规范之间的所有内容” - 任何人都可以评论是否是这种情况?

标签: ruby-on-rails ruby rspec rspec2


【解决方案1】:

我最终在我的帮助类中生成了一个方法,该方法使用 Class.new 生成了新类,因此我可以确定在两次测试之间没有留下任何东西。

【讨论】:

    【解决方案2】:

    您应该充分利用after :each 块。

    after(:each) do 
      @foo = nil
    end
    

    【讨论】:

    • 甚至是一个环绕语句,它在测试之前记住值并在之后将其设置回来。
    • 作者的实例变量在被测类中,而不是在测试本身中。
    猜你喜欢
    • 1970-01-01
    • 2016-11-17
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多