私が書いているerrbotプラグインのユニットテストを完了しようとしています。どのようにbotcmd
メソッドで使用されるヘルパーメソッドを模倣する方法を教えてもらえますか?errbotのヘルパーメソッドを模擬する方法
例:
class ChatBot(BotPlugin):
@classmethod
def mycommandhelper(cls):
return 'This is my awesome commandz'
@botcmd
def mycommand(self, message, args):
return self.mycommandhelper()
私のコマンドクラスを実行するとき、どのように私はmycommandhelperクラスをモックすることができますか?私の場合、このクラスはユニットテスト中に実行すべきではないリモート操作を実行しています。
これは通常のユニットテストではうまくいくと思いますが、testbot.push_messageやtestbot.pop_messageなどの機能を提供するerrbotのtestbot実装でうまくいくかどうかわかりません。 Testbotは模擬クラスをインポートするのではなく、プラグインの元のクラスとメソッドをインポートします。 – DidiV
あなたが私たちに与えた制限されたコンテキスト/コードでは、それ以上のことは言えません。 クラスをインポートし、その変数を直接変更して模擬し、TestBotをインポートすると、*変更された元のクラスがインポートされます。 – Nether
十分なことですが、この特定のフレームワーク(errbot)はプラグインを動的に読み込むtestbotオブジェクトを提供しています。この目的のために、extra_plugin_dir = '。'を使用します。あなたは私の例で見ることができます。したがって、フレームワークは変更されていない元のafaikをロードするため、テストファイル内のプラグインクラスを変更することはできません。私はあなたがこれを助け、努力していることに感謝します。 – DidiV