1

先日、私がコーディングしていたとき、突然、単純な問題に苦労していることに気づきましたが、解決策を混乱させました(少なくともpythonicの方法で)。

このコードは、いくつかのファイルをダウンロードするだけであると想定されていました。そのため、 、、などの受信イベントDownloadControllerに so を渡すことでいくつかのファイルを呼び出します。callbackinitprogresserrorsuccess

ただし、私のコードではこれらのイベントはまったく必要ありませんでした。これでいくつかの解決策が頭に浮かびました

  • DownloadControllerこの場合、送信イベントを無視するように、デフォルトcallback=Noneを設定してチェックするように変更します
  • コールバックインターフェイスNullCallbackImplに準拠しているが、何もしない (pass各イベントでのみ)があります。

最初のアプローチは、コードがややこしくてうまく設計されていないため、気に入りませんでした。

だから、私は2番目のアプローチに固執します...質問:

  • を持っているとどれくらい良い(おそらく「どれだけ悪い」)でしょうnull_callback = mock.Mock()か?(Michael Foord の python モック ライブラリを使用)
    • これを行うライブラリはありますか?
  • NullCallbackImplそれとも、単純な各メソッドの実装を作成することに固執する必要がありpassますか?
4

1 に答える 1

1

DownloadController の新しい使用例を発見しました - 「ユーザーがコールバックをカスタマイズできるようにする」。Downloadcontroller ソースを制御できるようです。イベントをメソッドとして公開するが、何もしない DownloadCallback クラスを定義できます。Controller は None (何もしない) または DownloadController インターフェイスを実装するものを受け入れます。

実際のコードにモックを使用するのは少し奇妙だと思います...モジュールのユーザーが満たす必要のある別の依存関係が作成されます。

于 2013-07-05T00:34:13.830 に答える