RethinkDB の機能をオブジェクトにラップする Model クラスを作成しました。その一部は次のようになります。
class Model(object):
__metaclass__ = ModelType
def __init__(self, **kwargs):
self._fields = kwargs
self._saved = False
def save(self):
if self._saved:
id = self._fields.pop('id')
result = r.table(self._tablename)
.get(id)
.update(self._fields, return_vals=True)
.run(self.connection())
else:
result = r.table(self._tablename)
.insert(self._fields, return_vals=True)
.run(self.connection())
if result['errors'] > 0:
raise ActionError(result['first_error'])
self._fields = result['new_val']
self._saved = True
save()
ここで、メソッドが本来の動作をするかどうかをテストしたいと思います。この操作にはデータベース接続を使用しているため、r
オブジェクトの正しいメソッドが呼び出されることをテストするだけでよいため、テスト前に接続を作成および削除するのはコストがかかり、役に立ちません。明らかに、モックはこれに対する解決策ですが、何をどのようにオブジェクトをモックするべきかという問題に直面していr
ます。私は概念をあざけるのが初めてであることを認めます。
では、 をテストする私のメソッドでは、 /が正しい引数で呼び出されたsave()
かどうかをどのようにテストできますか? また、それらに戻り値を割り当てるにはどうすればよいでしょうか?update()
insert()