gpt4 book ai didi

ruby-on-rails - 关于我在测试数据库中截断表的方法

转载 作者:行者123 更新时间:2023-12-04 06:09:14 30 4
gpt4 key购买 nike

在我的 rails 应用程序开发,当我运行我的 Rspec 测试 ,我需要截断我的测试数据库中的所有表 after(:all) .

(即清理test db中每个表中的所有数据)

为了解决这个问题,我想首先获得所有 ActiveRecord 型号 代表 测试数据库中的表 ,然后对于每个 型号 , 我用 delete_all方法来清理每个表。那是这样的:

ALL_ACTIVE_RECORD_MODELS.each do |model|
model.delete_all
end

我有 两个问题问这个问题:

1. 获取方式 所有事件记录模型 在我的 rspec 代码中的 Rails 中?

2. 我是否使用可接受的方式截断测试数据库中的所有表?如果没有,替代方法是什么?

最佳答案

有一个 gem 可以完成这个任务,叫做 database_cleaner:https://github.com/bmabey/database_cleaner .

它将确保从数据库中删除所有内容,但其默认策略不是删除内容,而是使用事务并在每次测试后简单地回滚更改。

请注意,在测试旨在作为事务性的行为时,这有时会导致问题,因为您不会看到您的事务执行。您可以通过添加 self.use_transactional_fixtures = false 来解决此问题在您不想使用事务的任何一组测试之前。不过,请记住之后再次清除您的数据。

关于ruby-on-rails - 关于我在测试数据库中截断表的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7977693/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com