1
エンティティがデータストアに置かれたことを正しくチェックしていないバグが少しありました。トランザクションやコンテキスト内のキャッシュやmemcacheで特に混乱します。ndbエンティティがデータストアに格納されていることを確認します
各メソッドの目的はn
をインクリメントし、データストアにエンティティを保存するときは、このエンティティを考えてみましょう:
class MyEntity(ndb.Model):
n = ndb.IntegerProperty()
def inc(self):
self.n += 1
# self.put() # oops, forgot to put the entity
@staticmethod
@ndb.transactional
def inc_trans(key):
x = key.get()
x.n += 1
# x.put() # oops, forgot to put the entity
及びこれらのユニットテスト:
def testInc(self):
x = MyEntity(n=0)
x.put()
x.inc()
x = x.key.get()
self.assertEqual(x.n, 1)
def testIncTrans(self):
x = MyEntity(n=0)
x.put()
MyEntity.inc_trans(x.key)
x = x.key.get()
self.assertEqual(x.n, 1)
私は何を追加する必要がありますエンティティが実際にデータストアに保存されていることを確認するためのこれらのテスト? (つまり、私たちはインコンテキストキャッシュまたはmemcacheのに格納された値をチェックしていないことは?)inc
とinc_trans
の呼び出しの後にユニットテストに
ndb.get_context().clear_cache()
を追加することが十分ですか?