问题标签 [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.
ruby-on-rails - 使用 Cucumber 和 Capybara-Webkit 在 Rails 4 上 typeahead.js 测试失败
我有以下 Cucumber 功能使用 typeahead.js 测试输入表单:
测试在第二步失败,并显示以下错误消息:
相关步骤定义如下:
select_from_typeahead 函数如下:
但是,问题似乎与预输入本身没有任何关系,因为代码在浏览器中工作,并且如果我添加一些调试输出,我注意到在运行测试时的第一步中电池被保存到数据库中好吧,它只是在第二步运行之前神秘地消失了。
我认为这是 database_cleaner 的一个问题,因为我知道在设置为使用事务时与 Javascript 不兼容,但我已经尝试将其设置为使用截断并禁用事务装置,但它仍然不起作用。
我的 features/support/env.rb 目前看起来像这样:
我的环境如下:
我是否遗漏了一些东西,是否有其他方式 database_cleaner 可能仍会干扰我的测试,或者它完全是我没有想到的其他东西?
任何想法都会非常受欢迎!
node.js - 在 node.js 中测试后清理数据库
每次之后我如何清理数据库?
在 Rails 中我使用https://github.com/bmabey/database_cleaner,但我没有为 node.js 找到类似的东西
node.js (v0.10.26)、PostgreSQL (9.3.3)、mocha、restify 和 knex。
ruby-on-rails - 数据库清理器在不应该删除数据时删除
有没有人遇到过这样的问题?
我有一个控制器,它触发邮件传递:
我收到了那个邮件:
我不明白为什么数据库清理器会在测试实际完成之前删除所有数据。
如果这很重要的话,这是一个 JS 测试(使用 Webkit)。
这是我的配置:
ruby - rspec 中 use_transactional_fixtures 的默认值是多少?
我问这个是因为在我到目前为止阅读的关于 rspec 和 database_cleaner gem 的文章中,我看到了这条线config.use_transactional_fixtures = false
。如果我使用 database_cleaner gem,我不能只删除这一行吗?
ruby-on-rails - 针对具有重要数据库种子的 Rails 应用程序运行集成测试的最快方法是什么?
我有一个 ruby on rails 应用程序,其中包含与 UI 元素相关的重要数据库种子,因此是集成测试所必需的。
我在测试后使用 database_cleaner 进行清理,但由于应用程序的大量 js 使用,我的大多数测试无法使用允许我指定表以排除回滚的事务策略运行。
结果是我必须在每次测试之前重新播种数据库或处理脏数据库。有没有人有在这种情况下进行测试的提示或知道任何可能有帮助的工具?
谢谢!
ruby-on-rails - About transaction using in RSpec test
I met a very strange issue when writing test using RSpec. Assume that I have 2 models: Company and Item with association company has_many items. I also set up database_cleaner with strategy transaction. My RSpec version is 2.13.0, database_cleaner version is 1.0.1, rails version is 3.2.15, factory_girl version is 4.2.0. Here is my test:
end
I set up an initial company to rspec configuration for using in every test because I don't want to recreate it in every tests because creating a company takes a lot of time(due to its callbacks and validations). The second test fails because item is not cleaned from the database after the first test. I don't understand why. If I change line company.items << FactoryGirl.create(:item)
to FactoryGirl.create(:item, company: company)
, the it passes. So can any body explain for me why transaction isn't rollbacked in the first situation. I'm really messed up
Thanks. I really appreciate.
ruby-on-rails - 当 database_cleaner 控制事务时,如何确保 ActiveRecord Fixtures 创建的数据回滚?
我使用 ActiveRecord Fixtures 来定义测试的预设数据。
我使用 database_cleaner gem 在测试之间重置数据库。我遵循Avdi Grimm 描述的方法,将截断用于 javascript 测试,但将事务用于非 javascript 测试。
大多数关于 database_cleaner 的建议都告诉您 set config.use_transactional_fixtures = false
,而不讨论其含义。这意味着当 AR 创建 Fixture 数据时,它不会启动事务。这个想法是,如果您使用该:transaction
策略,database_cleaner 将处理启动事务。
问题是 ActiveRecord在您有机会调用之前DatabaseCleaner.start
创建了 Fixture 数据。这意味着夹具数据不是事务的一部分,因此当 database_cleaner 回滚事务时,夹具数据仍然存在,从而污染了可能不期望夹具数据的后续测试。
如何让 ActiveRecord 在 database_cleaner 事务的上下文中创建 Fixture 数据?
我正在使用 Rails 4.1.0rc1、rspec-rails 2.14.2、rspec 2.14.1、database_cleaner 1.2.0。
ruby-on-rails - postgres 模式的数据库清理
我有gem devise
并且gem apartment
我正在使用它为每个设计的用户帐户创建单独的模式。
Apartment在该问题中的文档和建议建议使用 Rack 中间件在租户之间切换。在那种情况下,这是不可能的(据我所知),因为我依赖于用户而不是依赖于请求。
除了我的 RSpec 测试外,一切都很好。问题是在每个测试数据库都没有正确清理之后(它不会为新创建的用户删除架构)。如果我运行一小部分测试,所有测试都会通过,但如果我运行很多而不是Faker::Internet.first_name
生成已经被使用的用户名(这是无效的)。
所以这就是我的做法:
应用程序/控制器/application_controller.rb
app/controllers/albums_controller.rb(专辑模型belong_to :user
)
应用程序/模型/用户.rb
这是我在规范中添加的内容:
规格/工厂/user.rb
规范/支持/auth_helpers.rb
规格/功能/albums_spec.rb
因为我有一些测试js: true
比我有:
规范/支持/database_cleaner.rb
所有来源的当前提交都可以在我的 github 上找到。
所以..主要问题是:如何在测试后为每个用户清理数据库创建的模式?我也会感谢任何其他评论。提前感谢您的帮助。
ruby-on-rails - RSpec & Database Cleaner - 将某些对象永久保存在测试数据库中
我(迟来的)开始使用 RSpec/capybara 测试我的 Rails 应用程序(一个购物网站),使用数据库清理器清除数据库并使用 Factory Girl 为每个测试生成新对象(就像大多数人一样)。这很好用,我认为在测试之间清除数据是个好主意。
但是,生成同一对象的多个实例可能会变得很慢并且(据我所知)有点乏味。在我的数据库中有一些对象总是相同的,或者我总是会生成一个相同的副本进行测试。例如,我的Package
模型定义了订阅包的定价和功能限制。它可能永远不会改变。
有没有办法,使用这种配置(如果您需要更多信息,请评论并指定),将某些对象实例放入测试数据库中并将它们从数据库清理器中排除,或者以任何其他方式将特定对象的永久副本保留在您的测试数据库?
这主要是为了提高测试速度。
ruby-on-rails - 如何在 Rails 应用程序中使用 rspec 和 database_cleaner 保留某些表的测试数据
我有一些功能需要在运行之前将大量数据加载到测试数据库中。我已将这些规格标记为“慢”。我想要完成的是任何标记为“慢”的特性规范将只填充数据库一次,将其用于该特性中的所有规范,然后在该特性完成后清理整个数据库。
以下是我设置 spec_helper.rb 的方法:
然后设置这些功能,如:
在 database_cleaner 1.3 之前,这对我来说都很好。现在,一些规范可以正常运行,但随后它们都开始失败:
我应该在这里使用不同的策略吗?有人对我在这里要完成的工作有经验吗?