1

メソッドをテストしたいが、それが呼び出す他のメソッドをモックアウトしたい。概念を説明するために、次の簡単な例を作成しました。

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 を調べましたが、これをやってのける方法が見つかりませんでした。

助けてくれてありがとう:)

-- ピーター

4

1 に答える 1