- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 Mongoid 作为我的数据库,并按照其他 Stackoverflow 问题的说明配置了我的 spec_helper.rb
文件,但是我仍然收到错误消息,指出该对象在后续测试中存在。因此,database_cleaner
没有按应有的方式清理我的测试数据库。
这是我的spec_helper.rb
:
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rails/mongoid'
require 'mongoid-rspec'
require 'database_cleaner'
Mongoid.load!(Rails.root.join("config", "mongoid.yml"))
# Load support files
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
RSpec.configure do |config|
config.mock_with :rspec
#config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
config.before(:suite) do
DatabaseCleaner[:mongoid].strategy = :truncation
DatabaseCleaner[:mongoid].clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
我的 rspec 测试文件很简单:
describe Stock do
it "should get created with only name and symbol" do
stock = Stock.create(name: "Netflix", symbol: "NFLX")
expect(stock.errors.full_messages).to eq []
end
end
第一次使用 rake db:reset RAILS_ENV=test
时,我得到的输出很好(在我手动重置数据库之后),但是之后每次运行我都会得到:
Failures:
1) Stock should get created with only name and symbol
Failure/Error: expect(stock.errors.full_messages).to eq []
expected: []
got: ["Symbol is already taken"]
(compared using ==)
# ./spec/models/stock_spec.rb:6:in `block (2 levels) in <top (required)>'
我错过了什么?
最佳答案
好吧,经过大量阅读,我开始确定 database_cleaner 和 Mongo 不能很好地协同工作。虽然它可能不是最干净的解决方案,但它很简单:
在我的 spec_helper.rb
文件中,我最终将这一行添加到 RSpec.configure
block 中:
config.after(:each) do
Mongoid.purge!
end
关于ruby-on-rails - Database_cleaner gem 未清理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260724/
我们有一个邮箱模型,它使用另一个邮件应用程序也连接到的辅助数据库。这称为使用 establish_connection :mail_database 现在,我想我可以尝试将它包装在 if 语句中,以便
我有 database-cleaner为我的 rails 4 应用程序配置, 每次运行测试时,我发现我的数据库在 test 中都被清除了。和 development环境。 我的配置在 rails_he
我使用 Mongoid 作为我的数据库,并按照其他 Stackoverflow 问题的说明配置了我的 spec_helper.rb 文件,但是我仍然收到错误消息,指出该对象在后续测试中存在。因此,da
我遇到了一个非常奇怪的案例。我有这种情况,有时它会过去。有时它没有。事实上,每一步都是绿色的,但是在这一步之后它会产生这个垃圾堆栈跟踪,它不会告诉我关于我的应用程序的任何信息。 我在这里没有做任何复杂
我正在使用 Turnip和 Ruby on Rails。我有使用和不使用 javascript 的场景。我想对非 javascript 场景使用 transaction DatabaseCleaner
在我们使用 MySql 的 Rails 4.0 应用程序中,我们使用 rspec 和配置了策略的 database_cleaner gem :transaction 来为每个测试用例清理我们的数据库。
我正在使用 Rspec 和 Capybara 运行集成规范,并使用 Database Cleaner 清除规范之间的记录。如果重要的话,我会使用 Guard 和 Spork 自动运行我的规范。 不知何
database_cleaner 在大部分情况下都有效,但在某些情况下,我希望在每次测试后清除 user_id 之类的东西,但它不会。因此,user_id 将自始至终递增而不是清除,并且用户 id 可
database_cleaner 在大部分情况下都有效,但在某些情况下,我希望在每次测试后清除 user_id 之类的东西,但它不会。因此,user_id 将自始至终递增而不是清除,并且用户 id 可
我的 Rails 3.1 应用程序中有以下 spec_helper.rb 文件。我正在使用 Spork 更快地加载环境以进行测试。在将 Spork 添加到混合物中之前,我的所有测试都有效。添加 spo
我正在尝试让 database_cleaner 与我的测试套件一起工作,但我在网上找不到关于此错误的任何信息: 错误无法找到 id=1 的用户 在我添加 database_cleaner 之前,测试运
我正在构建一个 Rails 应用程序,该应用程序将 MySQL 用于某些模型,将 MongoDB 用于其他模型(通过 mongo_mapper gem)。 我们已经开始为该应用程序构建 cucumbe
我正在尝试将 rspec 与 mongoid、devise、database_cleaner 一起使用,但出现此错误 Failure/Error: Unable to find matching l
我有一个使用 mongoid、database_cleaner 和 rspec 的现有项目。我尝试使用 active_admin patches available 添加 active_admin .
当尝试按照 database_cleaner 的 GitHub page 上的示例进行操作时,我遇到了 RSpec 的以下错误: ActiveRecord::StatementInvalid:
我有一个旧的 Rails 应用程序升级到 3.2.11 版,它有很多使用 capybara 1.0.1 版编写并使用 selenium 驱动程序运行的请求规范。每次测试后使用 database_cle
我想使用 zeus (0.13.3) 为 ruby 2.0.0 上的 rails (3.2.11) 应用程序预加载我的 rails 环境,并使用 database_cleaner (0.9.1)
我是一名优秀的程序员,十分优秀!