问题标签 [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 回答
48 浏览

ruby - 数据库清理器不适用于 vim-rspec 插件

我使用 vim-rspec 插件能够在 vim 中运行 rspec 测试,到目前为止它运行良好。但突然database_cleaner宝石停止工作。这是我的配置:

我放了这两条消息来确定这两个块是否运行。但他们没有。即使我停止spring比我再次运行它也不会纠正它。奇怪的是,如果我从命令行运行rspec命令,一切都会正常运行,并且我会清理消息和数据库,第一次运行时,第二次运行示例。

0 投票
3 回答
546 浏览

sql - 如何在 SQL Server 2005 中查找超过 6 个月未执行或访问的数据库视图

我想通过在 SQL Server 2005 中识别和删除未使用或长时间未访问(可能是过去 6 个月或 1 年)的视图和存储过程来清理我的数据库。

请帮忙。

0 投票
5 回答
20803 浏览

ruby-on-rails - Rspec - 如何在每次测试后清理数据库

我有一个 Capybara 的功能规范作为登录页面,我正在使用 FactoryGirl + DatabaseCleaner

运行测试,我收到以下错误:

我认为 DatabaseCleaner 会恢复更改,但看起来用户记录在数据库中持续存在直到第二个场景块。

如何确保在第一个场景之后清理数据库?

我在这篇文章之后配置了数据库清理器

我还更新了规范帮助文件:

0 投票
1 回答
718 浏览

ruby-on-rails - 不能用 Fabrication-gem 和 Mongoid 制造很多物品

我在 RSpec 测试中使用 Fabrication-gem gem、DatabaseCleaner 和 Mongoid ORM。这是我的脚本:

规范/支持/database_cleaner.rb

规范/fabricators/client_fabricators.rb

最后,spec/requests/clients_spec.rb

不幸的是,我得到的错误与我的it {...}块一样多context,都带有来自 Mongoid 的相同错误消息:

请注意,如果我使用@clients = Fabricate.times(1, :client)(这意味着只制造一个客户端)它可以完美运行。所以我认为问题出在 DatabaseCleaner 中(我尝试了很多配置,但都没有成功)。

我正在使用 Ruby 2.2.0、Rails 4.2.0(确切地说是 rails-api)、DatabaseCleaner 1.4.1、Mongoid 4.0.2 和 Fabrication 2.13.1

你对如何解决这个问题有任何想法吗?谢谢。

0 投票
1 回答
59 浏览

ruby-on-rails - 控制器规格中的数据消失

使用 Rspec 创建一个简单的控制器规范时,我遇到了一个非常恼人的问题。调用引起问题的方法#set_company,它为当前登录的用户设置一个父“帐户”。

我的规格看起来像这样:

问题是,第二个测试是绿色的,但第一个不是(这个顺序是正确的!)。它是红色的,这是因为当它被触发时,没有company. 事情是这样的:

  1. user正在创建(使用company,它是一个依赖项),该用户的 ID 为1,与该用户创建的公司的 ID 也是1
  2. 第二次测试被触发,一切都很好
  3. 第一个测试被触发,但数据库中没有CompanyID=1,有一个 ID=2 的新测试显然是错误的,导致我的set_company方法失败。

我认为这可能与我正在使用 database_cleaner 的事实有关,但我完全不知道如何处理它以及我能做些什么。谢谢大家的任何线索。

0 投票
1 回答
883 浏览

ruby-on-rails - 在前端运行集成/验收测试。前端需要一个 API 来告诉 Rails 为每个测试设置哪个数据库状态

我的前端是一个基于 EmberJS 的应用程序。它本质上是完全异步的,所以用 Capybara 测试它是痛苦痛苦的。另一方面,Ember 提供了一个开箱即用的出色测试套件,使验收测试变得有趣和有效。

通常,夹具或后端模拟用于验收测试 Ember 应用程序。但是针对模拟的测试根本不能满足我:

  • 它不会揭示后端和前端之间可能存在的 API 不一致、竞争条件等。
  • 以这种方式测试后端业务逻辑是不可能的。这样的测试不是集成测试。
  • 最后,验收测试需要持久性,因此您必须在模拟中复制后端行为。这非常乏味,并且您实际上最终实现了两个后端。

所以我想测试真正的后端!将 Ember 设置为使用本地后端实例进行测试很简单。但问题是后端将在各个测试甚至测试会话之间保持其状态

这就是为什么我正在考虑在 Rails 中实现一个特殊的公共 API:

  • 该 API 仅在使用特定标志或 env var 运行 Rails 时可用。
  • Rails 以非测试模式运行,像在生产环境中一样提供正常的 API 调用。
  • 在每次测试之前,前端都会调用特殊的 API,告诉 Rails 这个特定的测试需要哪些数据库设置。
  • 当收到对特殊 API 的调用时,Rails 会清理数据库并用请求的数据填充它。例如,要测试从购物车中删除商品,数据库应该在购物车中有三个商品。
  • Rails 完成 API 请求,前端开始测试。
  • 前端运行测试步骤,使用正常的后端 API,就像在生产中一样:登录、创建帖子、评论它们。它还会尝试做一些被禁止的事情,例如在未登录的情况下编辑帖子,超过文本长度限制等,并验证后端是否拒绝被禁止的操作。
  • 当前端运行下一个测试时,它会再次调用特殊的 API。Rails 将丢弃前一个测试产生的状态并为这个特定的测试设置一个新的状态。

我是一名前端开发人员,对 Rails 有粗略的了解。Factory GirlDatabase Cleaner似乎是适合这项工作的工具,但绝对没有关于如何在 Rails 的正常测试环境之外使用它们的信息。我想我需要一个控制器或 Rails 引擎什么的。

所以问题是:我如何在 Rails 中创建一个 API,前端可以使用它来告诉 Rails 使用夹具工厂设置某个数据库状态,而 Rails 以非测试模式运行,即提供 REST API 和没有通过 RSpec/Capybara/Cucumber 运行?

额外功能:应在前端定义夹具工厂属性,以便将测试代码存储在一个地方。因此,后端应该能够通过特殊的 API 接受夹具工厂属性。默认值仍然可以在后端的代码库中定义。

我相信这可能成为验收/集成测试的最佳实践。如果我设法实现它,我承诺会发布一个 gem。

0 投票
0 回答
1071 浏览

ruby-on-rails - 使用 rspec 和数据库清理并行执行测试

我已将 rspec 升级到 3.2 版,现在Mysql2::Error: Duplicate entry运行规范时出现很多数据库错误 ()。这些规范似乎是并行运行的。我正在使用数据库清洁器 gem (1.4.1),它在升级之前就可以工作。怎么了?这是我的 spec_helper 文件:

0 投票
1 回答
576 浏览

ruby-on-rails - 运行测试时无法清除 Mongo DB

我正在使用rails, mongoid, spork, rspec.

通过运行测试时,rspec我看到数据库中的记录数量不断增加。也purge!没有database_cleaner帮助。

我的测试是:

我的规范助手是:

正如我之前提到的,我也尝试过database_cleaner,但事情没有改变:

所以我马上有几个问题:为什么purge!什么都不做,为什么DatabaseCleaner不工作。

我发现了一个数据库清理问题,但没有任何有用的解决方案。

我在用

0 投票
6 回答
2530 浏览

ruby-on-rails-4 - database_cleaner 正在擦除我的开发数据库

我已经database-cleaner为我的 rails 4 应用程序进行了配置,每次运行测试时,我发现我的数据库在环境中都被清除testdevelopment

我的配置rails_helper如下:

我怎样才能确保清洁工只擦拭数据库test environment而不接触我的development

database.yml的如下:

0 投票
1 回答
1304 浏览

ruby-on-rails - MiniTest、Capybara、Fixture、Database_Cleaner 第二次没有通过

以下测试第一次通过(之后rake db:test:prepare)但失败在后续运行中给出错误。

Capybara::ElementNotFound:无法找到 css“#sale_payment_btn”

当我使用硒和铬时,我可以看到销售的 ID。我注意到后续测试的 ID 相同。IE980190963

我的理论是

  1. database_cleaner未按预期运行。(虽然我在test.log文件中看到了 DB 清理 sql 命令,但我看到数据仍保留在数据库中)

  2. visit不会创建新的(尽管我使用了 minitest ,但@sale正如这里所说),因为没有渲染(首次运行时#sal_payment_btn已经有销售)。payment

我现在正在拉头发半天。我努力了

  • webkit司机
  • 不同的清洁策略truncationdeletion

我仍然无法通过第二次测试。手动测试运行正常。

我在哪里做错了什么?

PS我正在使用以下宝石

我已阅读以下内容