2011-04-26 5 views
8

두 번째 데이터베이스로 MongoDB와 함께 TDD를 사용하려면 어떻게해야합니까? RSpec에 또는 내가 그것을 테스트 할 수 있습니다 무엇을 사용TDD : Rspec Ruby MongoDB/Ruby Mongo Driver

:

감사

편집.

+0

맨손 MongoDB 드라이버를 사용하고 있습니까, 아니면 MongoMapper, Mongoid 등과 같은 ORM을 가지고 있습니까? 또한 MongoDB를 모델의 지속성 레이어, 캐싱, GridFS를 통한 파일 등으로 사용하고 있습니까? 몇 가지 추가 정보가 유용 할 것입니다. – michaeltomer

+0

루비 몽고 매퍼 만 메인 데이터베이스가 아닙니다. 캐싱도없고, 아무것도. 그러나 이는 수많은 영구 데이터를 저장하는 응용 프로그램의 큰 부분을 차지합니다. – donald

+0

너는 평야 건축에 대해 말하는거야? activerecord가있는 일부 모델, mongo 문서가 아닌 모델? 관심있는 mongomapper와 함께하는 방법을 보여줄 수 있습니까? – oma

답변

4

[업데이트] MongoMapper 함께 를 쉽게 MongoMapper.database.eval(Mongo::Code.new('function(){ return 11 + 6; })

같은 MongoDB를 연결 직접

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

이 다른 SO Q/A 더욱 직접 사용하는 자바 스크립트 함수를 사용하여 설정 [/ 업데이트]

나는 이런 다국어 아키텍처를 가지고 있으며, 일부 모델은 postgresql이고, 다른 것은 몽고 docu 멘토. 나는 당신이 무엇을 요구하고 있는지 정말로 모르겠다. 그래서 나는 여기로 들어가서 대부분의 나의 구성을 게시 할 것이다. 그것은 내 해킹을 포함, 당신은 아마 다른 곳에서 더 아름다운 설정을 찾으십시오.

나는 그래서 여기에 포함 된 다음 문서, 사양과 문서의, 요지 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 

난 당신이 대답을 원하는 것을 모르겠지만, 나는이 누군가에게 도움이 될 바랍니다.

0

내가 수집 할 수있는 것으로부터, 모델 데이터를 저장하지 않는이 보조 데이터베이스를 사용하여 앱이 레일스 MVC 패러다임을 고수하고있는 것처럼 보이지 않습니다.

mongo에 의존하는 앱의 보조 부분을 가져 와서 라이브러리에 붙여 넣는 것이 좋습니다. 다른 곳에서 사용하는 것이 좋으면이 보석을 만들 수 있습니다. 그런 다음 표준 테스트 도구를 사용하여 라이브러리 논리에 대한 테스트 세트를 만들고 간단한 요구 사항 또는 일부 지시문 (사용하는 기능과 사용 방법에 따라)에 앱에 통합하십시오.

관련 문제