是否有一种智能方法可以在不命中数据库的情况下测试示波器?
我在问,因为我正在处理多级嵌入式文档的作用域,而实际在db中创建对象需要首先创建一长串对象。 这似乎是低效的性能,并且编写测试单个范围非常麻烦。
答案 0 :(得分:0)
我不确定您的多级嵌入式文档的含义,但您可以断言范围是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。