1 つのヘルパー オブジェクトからスケルトン オブジェクトを取得し、2 番目のヘルパーを使用してそれを変更し、変更されたオブジェクトを最初のヘルパーに戻す関数をテストしています。次のようなもの:
class ReadModifyUpdate(object):
def __init__(self, store, modifier):
self._store = store
self._modifier = modifier
def modify(key):
record = self._store.read(key)
self._modifier.modify(record)
self._store.update(key, record)
Python と Mox を使用して、これを次のようにテストできます。
class ReadModifyUpdateTest(mox.MoxTestBase):
def test_modify(self):
mock_record = self.mox.CreateMockAnthing()
mock_store = self.mox.CreateMockAnything()
mock_modifier = self.mox.CreateMockAnything()
mock_store.read("test_key").AndReturn(mock_record)
mock_modifier.modify(mock_record)
mock_store.update("test_key", mock_record)
self.mox.ReplayAll()
updater = ReadModifyUpdate(mock_store, mock_modifier)
updater.modify("test_key")
...しかし、これは store.update() が Modifier.modify() の前に誤って呼び出されるというバグをキャッチしません。複数のモックで呼び出されたメソッドの順序を Mox で確認する良い方法はありますか? EasyMock の MocksControl オブジェクトのようなものですか?