だから私はイベントリスナーを持っているSQLAlchemyのモデルがあります:Pythonの:(mock.unittestを使用して)SQLAlchemyのイベントハンドラを模擬する方法
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
@event.listens_for(User, "after_insert")
@event.listens_for(User, "after_update")
def do_something(mapper, connection, self):
foo = SomeClass(self)
foo.do_something_to_database()
をそして、私はモデルを挿入/更新する必要があるユニットテストを持っていますそれはまだ呼ばれているdo_something
機能のように思えるし、成功裏に嘲笑されていないため
@patch('my_package.user.do_something')
def test_user(mock_do_something):
user = User() # This insert will invoke 'do_something' via the event listener.
assertSomething(user)
しかし、私のテストは失敗します。私はどのようにしてhereのパッチを読んでみましたか(この機能は正しいと思いますか?)、SQLAlchemyソースコードhereを見て、適切なモジュールを見つけました(@patch('sqlalchemy.event.registrat._listen_fn')
のようなものですが)。
誰もこれまでにこれまでに遭遇したことはありますか?