我在响应写了一个回答这个问题的错误到一个问题有关的区别TRUNCATE和DELETE,但我认为这是一个耻辱不共享,所以我会后我自己的答案,以我自己的问题...的是,即使道德?:)
编辑:如果您的答案是平台特定的,请指出.
最近我的一个黄瓜场景出了问题.功能运行时,我的测试数据库中的某些条目正在消失.我通过改变线来解决问题
DatabaseCleaner.strategy = :transaction
Run Code Online (Sandbox Code Playgroud)
至
DatabaseCleaner.strategy = :truncation
Run Code Online (Sandbox Code Playgroud)
我不确定为什么这有帮助.数据库清理工具宝石网页上有一个表格,但它并没有真正说出这两个术语的含义.任何帮助理解这两个概念之间的差异都会很棒.
我想提高测试的速度.
use_transactional_fixtures或使用database_cleaner宝石吗?:truncation到:transaction我的800多个例子后运行速度快了4倍!use_transactional_fixtures我使用database_cleaner时应该关闭:transaction吗?:transaction吗?:transaction来:truncation使用硒或当akephalos?PS Mysql,Rails 3,Rspec2,Cucumber
PPS我知道spork和parallel_test并使用它们.但他们是偏离主义的.例如,叉勺节省整个套件运行约15-20秒,而从改变:transaction到:truncation显着增加从3.5到13.5分钟(10分钟差)运行时间.