2014-03-28 34 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它在幕后使用它们更明确的)持久化数据到数据库中。