在rails rspec中,我正在编写这样做的测试用例:
after(:each) do
DatabaseCleaner.clean_with(:truncation)
end我需要在每次测试运行后清理数据库。但是,这会不会影响我的测试的性能,并使它们变慢?
发布于 2015-10-26 20:26:45
“截断”方法将根据表数产生影响,因为它将执行每个表的一个查询来截断。您可以使用"transaction“方法代替,它将执行基于事务的回滚,这将大大减少用于回滚到干净数据库状态的资源量。
如果您使用ActiveRecord并希望清楚地了解发生了什么,您可以在测试中这样做:
before do
ActiveRecord::Base.logger = Logger.new(STDOUT)
end发布于 2015-10-26 18:12:05
它将对性能产生影响,这取决于运行after钩子的测试数量。
另外,我认为最好使用before而不是after。根据测试用例的不同,数据库的状态是一个先决条件;测试用例需要这个先决条件。您应该确保使用before钩子的前提条件,而不是依赖于在其他地方定义的after钩子。
https://stackoverflow.com/questions/33348620
复制相似问题