メソッドをテストしたいが、それが呼び出す他のメソッドをモックアウトしたい。概念を説明するために、次の簡単な例を作成しました。
class myClass():
def one_method(self):
print "hey"
def two_deep(self):
self.one_method()
def three_deep(self):
self.two_deep()
私は Mox と呼ばれる Python モック フレームワークを使用しており、これを行うために次のコードを書きました。
def test_partial(self):
self_mox = mox.Mox()
some_object = myClass()
## 1. make your mock
my_mock = mox.MockObject(some_object)
my_mock.one_method().AndReturn('some_value')
self_mox.ReplayAll()
ret = my_mock.three_deep() ## *** SEE NOTE BELOW called "comment":
self_mox.VerifyAll()
コメント:
上書きされていないメソッドでこのモックを呼び出すと、モックはデフォルトで元のコードになり、最後の呼び出しが置き換えられて、必要な一連の呼び出しを取得できると思いました...しかしこれはしません。挿入メソッドを持たないテスト オブジェクト内にモック オブジェクトを埋め込む方法がわかりません。
これを解決するために Partial Mocks と Chained Mocks を調べましたが、これをやってのける方法が見つかりませんでした。
助けてくれてありがとう:)
-- ピーター