【问题标题】:Can I cause RSpec to fail if I accidentally use the database?如果我不小心使用了数据库,会导致 RSpec 失败吗?
【发布时间】:2014-11-13 16:09:54
【问题描述】:

我有一组我希望使用数据库的测试,以及另一组我不想访问数据库的测试。如果我不小心访问数据库,是否有一种简单的方法可以将 RSpec 配置为失败?即使知道如何判断数据库是否被使用也会给我一个起点。

【问题讨论】:

  • 在提出任何建议之前 - 您是否尝试在数据库关闭的情况下运行测试?只要您触摸其中一个模型类,ActiveRecord 就会访问您的数据库。
  • 我一定遗漏了一些东西...如果我的数据库没有运行,那么我需要数据库的测试将会失败。您是否建议我的测试在测试运行时打开和关闭数据库?

标签: ruby activerecord rspec


【解决方案1】:

看看nulldb。来自自述文件:

describe "stuff that shouldn't touch the database" do
  after :each do
    Employee.connection.should_not have_executed(:anything)
  end
  # ...
end

您需要为要隔离数据库的特定测试设置 NullDB 适配器。但是您应该能够做到这一点,同时不会干扰您希望允许数据库操作的其他测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 2021-05-24
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多