私もいくつかの関連するオブジェクトを保存するcreate
メソッドをオーバーライドDjangoのモデルのための顧客管理を持っている:DjangoでRelatedManagerメソッドをモックする方法はありますか?
class CustomManager(models.Manager):
def create(self, amount, user, description):
txn = self.get_query_set().create(user, description)
txn.budget_transactions.create(amount)
return txn
私の質問は:どのように私は例外を発生させるtxn.budget_transactions.create
への呼び出しを欺くのですか?
txn
オブジェクトのbudget_transactions
属性は、django.db.models.fields.related.RelatedManager
のインスタンスです。 mock.patch
を使用してこのクラスをモックすると、動的に宣言されているので機能しません。直接インポートすることはできません。
誰でもこれを行う方法を知っていますか? Djangoは、オブジェクトに対して方法を設定してオーバーライドしているので、あなただけのモックオブジェクトにRelatedManagerを設定することはできません
Mockライブラリを使用していますか?パッチコンテキストマネージャやデコレータを使いたいですか? – santiagobasulto
この問題を解決できるのであれば、mockライブラリを使用してもよろしいですか?上記のように、従来の方法で 'mock.patch'を使用することは、RelatedManagerクラスの動的宣言のためには機能しません。 – DavidWinterbottom