配置Rspec以在生产数据库上运行

时间:2015-11-02 02:20:45

标签: ruby-on-rails rspec rspec-rails

我正在研究这个项目,我从远程生产数据库中选择。我的用户只授予SELECT,因此它相对安全。但是现在我来到了必须测试查询对象的地步,这有点痛苦。

但我无法运行测试,因为它试图删除我的用户不允许的数据库。如何配置Rspec,以便它不对db做任何事情?

现在我在Rails控制台中手动测试了这个:

expected = {...}

QueryObject.new.call
# SELECT ...

_ == expected
=> true

1 个答案:

答案 0 :(得分:1)

一般来说,针对实时数据库进行测试是一个坏主意。

从生产数据库中提取一些样本数据,并使用fixture或工厂将其添加到测试数据库中。然后,您可以对测试数据库执行查询,而不必担心:

  1. 生产数据库中的数据改变并抛弃测试,产生"漏报";
  2. 您的测试由另一个用户(具有更高权限)在错误的环境中运行,并无意中修改了生产数据库。
  3. 通过在使用应用程序时运行测试来降低性能。