【发布时间】:2020-01-09 19:51:38
【问题描述】:
我没有使用事务测试。相反,我在每次测试后使用 DatabaseCleaner 手动恢复数据库:
after(:each) { DatabaseCleaner.clean_with :truncation }
但是,如果我强制退出 RSpec,数据库不会恢复。如何在强制退出前运行 DatabaseCleaner?
【问题讨论】:
-
你用的是什么强制退出? CTRL+C? CTRL+\?如果你杀死它过于激进(例如
kill -9作为紧急停止),你将很难终止它,它不可能清理任何东西。 -
Ctrl + C 两次。第一次它告诉我它正在打印摘要(但冻结或花费太长时间),第二次它实际上退出了
-
第二次中断迫使它放弃正在做的任何事情并硬终止。这可以防止它运行您的清理过程。您要么需要找出导致它停止的原因,要么将其包装在一个可以为您清理的过程中。如果可能的话,将这个
after移动到链中的更早的位置,这样它就可以在任何阻塞它的慢动作之前运行。
标签: ruby-on-rails ruby rspec