コード内でメール送信関数をスタブ化するために mox を使用しています。関数がN回呼び出され、毎回特定のパラメータセットで呼び出されることを確認したいと思います。
Mox は ValueError("There must be a least one expected method") を発生させていますが、スタブした関数呼び出しが発生していないように見えますが、実際には発生しているようです。
ログを見ると、関数が呼び出されていることがわかり、テスト対象のコードが実際に機能していることを示す DB 内のすべてのログ メッセージ/更新が表示されます。私はそれを検証する他の 14 の単体テストも持っているので、これは基礎となるコードではなくテストの問題であると確信しています。
これが私のテストです:
class MyTestSuite(mox.MoxTestBase):
def test_my_send_function(self):
self.mox.StubOutWithMock(module_path, "my_send_function")
for state in SEQUENCE: # defined elsewhere, assume 5 states in sequence
module_path.my_send_function(to_email_address, subject, IgnoreArg())
self.mox.ReplayAll()
module_path.my_send_function_parent() # loops over the 5 states in SEQUENCE and calls my_send_function()
# Verify() and UnsetStubs() are done automatically because I subclasses MoxTestBase
なぜ mox は電話がかかってきたのに一度も起きなかったと言っているのですか? これについては、MOXドキュメントやSOの他の場所で何も見つかりませんでした。