首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails rspec中的after(:all)与after(:all)

Rails rspec中的after(:all)与after(:all)
EN

Stack Overflow用户
提问于 2015-10-26 14:45:37
回答 2查看 856关注 0票数 1

在rails rspec中,我正在编写这样做的测试用例:

代码语言:javascript
复制
after(:each) do
    DatabaseCleaner.clean_with(:truncation)
  end

我需要在每次测试运行后清理数据库。但是,这会不会影响我的测试的性能,并使它们变慢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-26 20:26:45

“截断”方法将根据表数产生影响,因为它将执行每个表的一个查询来截断。您可以使用"transaction“方法代替,它将执行基于事务的回滚,这将大大减少用于回滚到干净数据库状态的资源量。

如果您使用ActiveRecord并希望清楚地了解发生了什么,您可以在测试中这样做:

代码语言:javascript
复制
before do
  ActiveRecord::Base.logger = Logger.new(STDOUT)
end
票数 2
EN

Stack Overflow用户

发布于 2015-10-26 18:12:05

它将对性能产生影响,这取决于运行after钩子的测试数量。

另外,我认为最好使用before而不是after。根据测试用例的不同,数据库的状态是一个先决条件;测试用例需要这个先决条件。您应该确保使用before钩子的前提条件,而不是依赖于在其他地方定义的after钩子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33348620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档