问题标签 [database-cleaner]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3927 浏览

ruby-on-rails - DatabaseCleaner.clean_with(:truncate) 不会重置自动递增的 id

我目前DatabaseCleaner在运行 PostgreSQL 的 Rails 项目中使用,并将其设置如下。

在我的一个 Rails 测试套件中,我打印了一个实例的 id。我认为它应该是相对较小的数字,因为 clean_with(:truncate) 假设清除 db 并在其上运行真空。但每次我运行测试时它都会增加。

测试通过,它使用什么顺序都没有关系。但为什么clean_with(:truncation)不能以应有的方式工作?

====== 编辑 ======

这在 RSpec 测试的范围内。我知道序列编号对性能没有影响,但是对每个 :suite 进行昂贵的清理 (:truncation) 并使用便宜且快速的清理 (:transaction) 会。所以我想了解为什么clean_with(:truncation)在运行测试套件之前不为我重置 id 以获得干净的数据库状态。

0 投票
1 回答
408 浏览

postgresql - 如何让 Database Cleaner 将插入 ID 重置为 1?

我从使用截断转换为 Database Cleaner 的事务策略。它要快得多(准确地说是 2.5 倍)。

现在的问题是我有一些测试期望第一个插入 ID 为 1。这些测试用于分页响应。他们期望数据库中有 11 条记录,从 id 1 开始。

是否可以将 Database Cleaner 配置为使用事务,但也可以将插入 ID 设置为 1?

使用 Postgres。

0 投票
1 回答
402 浏览

ruby-on-rails - RSpec、Factory Girl 和 Capybara:未保存任何项目

我有带有 RSpec 的可安装 Rails 引擎:

简单工厂:

水豚特点:

并且 Post 模型没有任何验证。

但是当我运行测试时,它显示没有创建任何帖子。

还有 ActiveRecord 日志:

0 投票
1 回答
739 浏览

ruby-on-rails - 如何截断与公共不同的架构中的所有数据(database_cleaner)

在我的项目中,我使用数据库多租户“公寓”gem。

为了清理它测试的数据库,我使用“database_cleaner”gem

在使用 Capybara 截断策略的 RSpec 测试中,每次测试后只清理公共模式,其中只有用户和公司。

其他方案未清除。

如何清除另一个方案中的数据

0 投票
0 回答
45 浏览

ruby-on-rails - 使用 database_cleaner 测试后删除 Rspec 测试数据

我正在使用 Rspec 来测试我的 rails 应用程序。此应用程序使用一些预加载数据和一些自定义数据。现在我想在相同的开发环境中测试这个应用程序而不改变数据库的状态。我使用 database_cleaner gem 在测试后删除数据。但它会删除表中的所有数据。任何建议都会有所帮助,我如何在不更改数据库中数据的情况下测试代码。

0 投票
1 回答
532 浏览

ruby-on-rails - RSpec、Postgres 和 DatabaseClearer:是否可以使用事务策略重置 id?

我知道我不应该对特定的 ID 进行编码,但有时它只会让生活变得更轻松。我正在使用带有 RSpec 和 Postgres 的 DatabaseCleaner,我想知道在使用事务策略时是否可以在规范之间重置 id?

这是我目前的spec_helper

0 投票
1 回答
239 浏览

ruby-on-rails - 如何防止数据库清理黄瓜

这是我的 env.rb 需要 'cucumber/rails' ActionController::Base.allow_rescue = false Cucumber::Rails::World.use_transactional_fixtures = false

运行 cucumber 后,它从数据库中清理数据。如何防止数据擦除

0 投票
1 回答
134 浏览

rspec - SystemStackError - 堆栈级别太深;在 Rspec 测试中,使用acts_as_audited、Rspec、数据库清理器

我遇到了一个奇怪的无限递归,它只出现在 Rspec 测试中。奇怪的是,这是由于向我的用户对象添加了审核,即使它失败的规范实际上与我的用户对象无关

这是它失败的测试。像所有无限递归一样,我没有得到实际的 stracktrace,只有堆栈级别太深失败:

0 投票
1 回答
2744 浏览

ruby-on-rails - 数据库清理器:清理与截断

以下有什么区别?

  • DatabaseCleaner.clean_with(:truncation)
  • 数据库清理器.clean

我想弄清楚的是使用数据库清理器在我的测试(性能方面)中清理 before(:all) 钩子的最佳方法是什么。我的 before(:all) 钩子只是创建了大量的工厂并在它们之间创建了一些关联。目前,我只是将它们全部加载到 before(:each) 中,而不必担心之后的清理。

我目前的策略如下:

所以除了我之前的问题,我的 after(:all) 应该是什么样子?

0 投票
0 回答
274 浏览

ruby-on-rails - Rails rspec 测试在 Docker 和 CI 中失败

当我在本地运行时,rspec所有规格都通过了。

当我在DockerCI中运行所有规范时,它们都失败了。但是,当我单独运行它们时,它们会通过。另一件要提的事情是,每次我有不同的规格失败时。

环境设置:

问题可能出在database_cleaner设置上。

所以我的问题是,如何让我的测试在DockerCI中通过?