测试Mongoid范围而不实际命中数据库?

时间:2013-12-07 22:22:16

标签: ruby-on-rails rspec mongoid factory-bot

是否有一种智能方法可以在不命中数据库的情况下测试示波器?

我在问,因为我正在处理多级嵌入式文档的作用域,而实际在db中创建对象需要首先创建一长串对象。 这似乎是低效的性能,并且编写测试单个范围非常麻烦。

1 个答案:

答案 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。