【问题标题】:Ruby on Rails RSpec wipes the databaseRuby on Rails RSpec 擦除数据库
【发布时间】:2012-09-13 08:12:48
【问题描述】:

我对 RSpec 有点陌生。

我想运行一些示例 Rspec 规范(使用 rake spec 命令),具有

config.use_transactional_fixtures = false

在配置文件中,正如一些手册中推荐的那样。

但是,它仍然会擦除数据库,这让我很沮丧,因为我在其中有敏感数据,现在它都消失了。到底是谁在测试的时候想出了清空数据库的主意?

如何避免这种行为?

提前致谢!

【问题讨论】:

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


    【解决方案1】:

    事务可确保您的测试数据库保持干净,以便您的测试保持干净和可预测。你应该使用它们。要为单个示例组关闭它们,请在描述行之后使用self.use_transactional_fixtures = false。但是,如果您这样做,您将需要一个随后清理的 after(:each) 块。

    我不明白为什么你的测试数据库中有敏感数据,听起来你在那里做错了什么。

    【讨论】:

    • 所以你是说我不能完全关闭这个功能?
    • 我该怎么办呢?嗯?例如,如果我的 Web 应用程序已经启动并运行,我应该怎么做?测试一些新功能并清除所有数据?还是什么?
    • 你应该能够使用你用来关闭它的设置,但如果它仍在清除数据,听起来你有什么东西连接错了。我真的建议您继续使用它,除非您在测试后自己清除整个数据库。如果这是不可接受的,那么你做的非常错误,你不应该费心用你所拥有的设置编写测试,因为它们不可靠。
    • 测试数据库应该与您的开发和生产数据库分开。
    • 如果真的有 1 行配置,我可能做错了什么。
    猜你喜欢
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多