我有一个单元测试,用于测试对帖子的评论是否正确添加到MongoDB数据库。有一个集合Post
,其中ListField
包含名为comments
的字符串。 Post
是继承自MongoEngine的Document
的类,它具有自定义方法create
和add_comment
。
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 :(得分:0)
如果不尝试从数据库加载数据以确保它已保存,则无法真正实现这一点。
save
中的MongoEngine检查是否存在_id
或self._created
,但这样就知道尝试插入或插入。但只有保存和对数据库说话才能让你知道它是成功的,并且没有违反任何独特的索引。
但是,您可以使用insert
和/或update
将数据保存到数据库中(这比使用save
更明确,后者使用它们)。