ruby - 在 Rspec 中测试抽象类

标签 ruby rspec

在我的 Ruby 库中,我有一些旨在通过继承使用的类。因此,我在规范文件中做的第一件事是定义一个自定义的 Foo 类:

module MyGem
  describe MyClass do
    class FooMyClass < MyClass
      ...
    end
  end
end

问题是定义的类会泄漏给其他测试,必须小心使用唯一名称或使用 after :all block 删除类。

考虑到 Rspec 已经提供的所有魔法,这感觉有点手动。有没有更好的方法来定义抽象类的规范?大多数情况下,我想要一种简单的方法来清除所有临时声明的命名空间。

当我这样定义多个类时,清理起来特别烦人:

module MyGem
  describe MyClass do
     ... 
  end

  class FooMyClass < MyClass
    ...
  end
  describe FooMyClass do
    ...
  end
end

使用 after :allafter :each block 更难正确取消定义。

最佳答案

一种可能是使用 anonymous classes .

  let(:fooMyClass) do
    Class.new(MyClass) do
      # ...
    end
  end

这样就不需要清理了。

关于ruby - 在 Rspec 中测试抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28114647/

相关文章:

ruby - 在 Mac M1 上使用 ruby​​-install 安装 ruby​​ 会导致错误

ruby - RVM 似乎不能很好地与 ruby​​-1.9.3-preview1 配合使用

ruby-on-rails - 用 Spork 重新定义常量

ruby-on-rails - 在 rspec 的 Controller 测试中使用 rails 的 "post",在路由上使用范围和协议(protocol)

ruby-on-rails - 如何使用 rspec have_selector 方法来验证 XML?

ruby-on-rails - 在 Rspec Rails 3 中使用特性规范嵌套场景

ruby-on-rails - 在 debian Squeeze 上安装 RoR

ruby-on-rails - 在 Rails 中获取当前路径名

ruby-on-rails - 在 View 规范中测试 "dynamic"页面标题 (Rails 4 + RSpec 3)

ruby - 成对组合数组的元素 ruby