【问题标题】:Testing Mongoid scopes without actually hitting the db?在不实际访问数据库的情况下测试 Mongoid 范围?
【发布时间】:2013-12-07 22:22:15
【问题描述】:

有没有一种聪明的方法可以在不影响数据库的情况下测试范围?

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

【问题讨论】:

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


    【解决方案1】:

    我不确定您的多级嵌入文档的含义,但您可以断言范围是 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。

    【讨论】:

      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      相关资源
      最近更新 更多