【发布时间】:2013-12-07 22:22:15
【问题描述】:
有没有一种聪明的方法可以在不影响数据库的情况下测试范围?
我问是因为我正在处理多级嵌入式文档的范围,并且要在 db 中实际创建对象需要首先创建一长串对象。 这在性能方面似乎效率低下,并且编写来测试单个范围确实很麻烦。
【问题讨论】:
标签: ruby-on-rails rspec mongoid factory-bot
有没有一种聪明的方法可以在不影响数据库的情况下测试范围?
我问是因为我正在处理多级嵌入式文档的范围,并且要在 db 中实际创建对象需要首先创建一长串对象。 这在性能方面似乎效率低下,并且编写来测试单个范围确实很麻烦。
【问题讨论】:
标签: ruby-on-rails rspec mongoid factory-bot
我不确定您的多级嵌入文档的含义,但您可以断言范围是 Mongoid::Criteria,并进一步断言它是具有某些属性的条件。
RSpec 示例:
expect(Charge.successful).to be_a Mongoid::Criteria
expect(Charge.successful).to eq Mongoid::Criteria.new(Charge).where(state: 'successful')
请注意,这不是测试行为,这是最佳做法。
更好的方法可能只是硬着头皮使用FactoryGirl 之类的东西来创建对象并测试行为。大概要对您的系统进行全面验收测试,无论如何您都需要这些对象。
如果您想避免“撞到数据库”,可以使用EmbeddedMongo。这可能会加快您的测试速度,并且意味着您的 CI 服务器上不需要 MongoDB。
【讨论】: