2014-03-28 75 views
0

我有一個單元測試,用於測試對帖子的評論是否正確添加到MongoDB數據庫。有一個集合Post,其中包含ListField,其中包含名爲comments的字符串。 Post是從MongoEngine的Document繼承的類,它具有自定義方法createadd_comment獲取單元測試的Mongoengine的實際數據庫狀態

class TestNotSaving(TestCase): 
    def setUp(self): 
     Post.create(text='sample post') 

    def tearDown(self): 
     # Post.drop_collection() 
     pass 

    def test_comments(self): 
     comment = 'This is a sample comment.' 
     post = Post.objects[0] 
     post.add_comment(comment) 
     # post.save() 
     self.assertEqual(post.comments[0], comment) 

的問題是,如果我不救使用save方法文檔到數據庫中,MongoEngine仍然表現爲如果創建文檔和註釋存儲。但是,如果您沒有在代碼中正確保存文檔,我想編寫一個測試失敗。我如何刷新MongoEngine文檔的狀態?

回答

0

如果不嘗試從數據庫加載數據以確保它已被保存,則無法真正實現此目的。

MongoEngine在save確實檢查是否存在_idself._created,但這是知道要嘗試插入或插入的。但是隻有在保存和對數據庫進行交談時纔會讓你知道它是成功的,並且任何獨特的索引都不會被違反。

但是,您可以使用insert和/或update(這比使用save它在幕後使用它們更明確的)持久化數據到數據庫中。