2014-01-19 57 views
0

我想在ming中測試我創建的新模型,但是在模擬發生時我還缺少什麼東西。使用mings mim測試mongodb(mongo在內存中)

模型

from ming import Field, schema 
    from ming.declarative import Document 

    bind = create_datastore('test') 
    session = Session(bind) 

    class Post(Document): 
     class __mongometa__: 
      session = session 
      name = 'blog' 
     _id = Field(schema.ObjectId) 
     title = Field(str) 
     text = Field(str) 
     comments = Field([str]) 

測試

from www.tests.files import intial_post 
    from www.models import Post 
    from www.views import post_view 
    from ming import create_datastore 
    import pytest 

    @pytest.fixture() 
    def no_requests(monkeypatch): 
     bind = create_datastore('mim://localhost:27017/test') 
     monkeypatch.setattr("www.model.bind", bind) 

    def test_blog_view(no_requests): 
     Post(intial_post).m.insert() 
     post_view() == Post().m.find_one() 

測試通過,但該數據並非來自記憶它,因此猴補丁是不會改變的連接來自於磁盤MongoDB的。我能感覺到我很接近,但同時也不知道如何實現。

在此先感謝。

回答

0

要解決此問題,我們只需要將ming.Session修補連接到內存的新數據存儲。

from ming import create_datastore 
from ming import Session 


def no_requests(monkeypatch): 
    memory_datastore = create_datastore('mim://localhost:27017', database='test') 
    monkeypatch.setattr(Session, 'db', memory_database.db)