【问题标题】:rspec Mongoid scope works in development not in testsrspec Mongoid 范围在开发中工作而不是在测试中
【发布时间】:2015-07-27 22:55:56
【问题描述】:

我有一个适用于 Rails 中的 Mongoid 对象的范围,它在开发时效果很好,但在运行测试时效果不佳。它实际上在测试中根本不起作用。这是一个嵌入文档。

父母:

class Person
  include Mongoid::Document
  def self.with_appointments
    where(:appointments.not => { '$size' => 0 })
  end
  embeds_many :appointments, store_as: 'Appointments', class_name: 'Appointment'
end

嵌入的孩子:

class Appointment
  include Mongoid::Document
  embedded_in :person
end

当我对我的模型运行测试时,无论他们是否有约会,它都会返回 Persons。如果我从开发中的控制器对数据库运行相同的操作,它会过滤掉约会空缺的人。

我错过了什么?

在要求我更改数据库设置之前 -

  1. 我无法控制数据结构
  2. 假设我什至没有对数据库的写入权限

【问题讨论】:

  • 你能添加你的测试和开发代码的sn-p吗?包括设置
  • 您有什么特别感兴趣的吗?测试和开发代码加上所有设置肯定会是一堵巨大的代码墙,所以也许还有更具体的东西?
  • 我会使用 Pry 暂停测试并检查数据库。确保记录实际上是持久的?比较每个集合中的记录,看看它们是否与您预期的相同。一些测试源代码会有所帮助。
  • @KevinMonk 是的,这很奇怪,我使用 ByeBug 进行了调试,但测试数据库中没有任何内容。我会看看我能做些什么而不会在这里太深。
  • @PWKad 你想要什么?

标签: ruby-on-rails ruby rspec mongoid


【解决方案1】:

检查您的 GemFile,我敢打赌 Mongoid 设置为仅在开发中运行:

尝试切换这个

gem 'mongoid', group: :development

到这里

gem 'mongoid'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多