私はPythonが初めてで、特定の引数が渡された場合にのみ関数をモックしようとしています. 目的の引数以外が渡された場合は、代わりに元の関数を呼び出したいと思います。
Python 2.7 では、次のようなことを試しました。
from foo import config
def test_something(self):
original_config = config # config is a Module.
def side_effect(key):
if key == 'expected_argument':
return mocked_result
else:
return original_config.get(key)
config.get = Mock(side_effect=side_effect)
# actualy_test_something...
original_config
は のコピーではないため、機能しませんconfig
。無限ループに陥る同じモジュールを参照します。config
代わりに元のモジュールのクローンを作成することもできますが、それはやり過ぎのようです。
私が使用できるRSpecのモックに似たものはありますか? 例えば:
obj.stub(:message).with('an_expected_argument').and_return('a_mocked_result')
どんな助けでも大歓迎です。ありがとう。