TDD: Rspec Ruby MongoDB/Ruby Mongo Driver



我如何使用TDD与MongoDB作为我的第二个数据库?

感谢编辑:

使用Rspec或其他允许我测试它的东西

[Update]设置好MongoMapper后,您可以直接使用mongodb连接

mongodb = MongoMapper.database
collection = mongodb.collection("my_collection")
collection.find.first
=> {"_id"=>BSON::ObjectId('4e43dfc75d1e1e0001000001'), "key1"=>"val1" }

另一个SO Q/A甚至更直接,使用javascript函数像MongoMapper.database.eval(Mongo::Code.new('function(){返回11 + 6;})

(/更新)

我有这样一个多语言的架构,一些模型与postgresql,其他作为mongo文档。我不太确定你在问什么,所以我将直接进入并在这里发布我的大部分配置。它包括我的技巧,你可能会在其他地方找到更漂亮的配置。

我把设置放在要点中https://gist.github.com/957341

好的,这里是一个文档,嵌入文档,然后是规范。我一个一个地写规范,所以它们有点测试驱动。

class MyDocument
  include MongoMapper::Document
  key :title, String
  key :published_at, Time, :index => true
  key :collaborators, Array
  many :my_embedded_documents
end
class MyEmbeddedDocument
  include MongoMapper::EmbeddedDocument
  key :title, String
  key :author, String
  embedded_in :my_document
end
规范

require "spec_helper"
describe MyDocument do
  before do
    @md = MyDocument.create(:title => "Example", :collaborators => ["mongomapper", "rspec", "oma"] )
  end
  it "should have title" do
    found = MyDocument.find(@md.id)
    found.title.should == "Example"
  end
  it "should have two my_documents" do
    MyDocument.create
    MyDocument.count.should == 2
  end
  it "should be able to fetch embedded documents" do
    @md.my_embedded_documents << MyEmbeddedDocument.new(:title => "The King", :name => "Elvis Presley")
    @md.my_embedded_documents.build(:title => "Embedded example", :name => "Embeddo")
    @md.save!
    MyDocument.where(:title => "Example").first.should == @md #findMyEmbeddedDocument.count.should == 2
  end
end

spec_helper.rb

RSpec.configure do |config|
  #...
  config.after(:each) do
    MongoMapper.database.collections.each(&:remove)
  end
end

我不知道你想要什么答案,但我希望这将对某人有所帮助。

据我所知,你的应用程序似乎并没有坚持rails MVC范式,它使用了这个二级数据库,显然不存储模型数据。

我建议把应用中依赖mongo的辅助部分放到一个库中。如果在其他地方使用它是有意义的,你可以让它成为一个宝石。然后,使用标准测试工具为库的逻辑创建一个测试套件,并通过简单的要求或一些指令(取决于它的死亡和你打算如何使用它)集成到你的应用程序中。

相关内容

  • 没有找到相关文章

最新更新