【发布时间】: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。如果我从开发中的控制器对数据库运行相同的操作,它会过滤掉约会空缺的人。
我错过了什么?
在要求我更改数据库设置之前 -
- 我无法控制数据结构
- 假设我什至没有对数据库的写入权限
【问题讨论】:
-
你能添加你的测试和开发代码的sn-p吗?包括设置
-
您有什么特别感兴趣的吗?测试和开发代码加上所有设置肯定会是一堵巨大的代码墙,所以也许还有更具体的东西?
-
我会使用 Pry 暂停测试并检查数据库。确保记录实际上是持久的?比较每个集合中的记录,看看它们是否与您预期的相同。一些测试源代码会有所帮助。
-
@KevinMonk 是的,这很奇怪,我使用 ByeBug 进行了调试,但测试数据库中没有任何内容。我会看看我能做些什么而不会在这里太深。
-
@PWKad 你想要什么?
标签: ruby-on-rails ruby rspec mongoid