Ho un gestore di cliente per un modello di Django, che ridefinisce il metodo create
per salvare anche alcuni oggetti correlati:Come si prende in giro un metodo RelatedManager in Django?
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
La mia domanda è: come faccio a prendere in giro il chiamata a txn.budget_transactions.create
a sollevare un'eccezione?
L'attributo budget_transactions
dell'oggetto txn
è un'istanza di django.db.models.fields.related.RelatedManager
. Usando mock.patch
per deridere questa classe non funziona come è dichiarato dinamicamente - non può essere importato direttamente.
Qualcuno sa come fare?
Stai usando la libreria Mock? Vuoi usare un context-manager di patch o un decoratore? – santiagobasulto
Sono felice di utilizzare la libreria di simulazione se è in grado di risolvere questo problema. Come ho detto sopra, l'uso di 'mock.patch' nel modo convenzionale non funziona a causa della dichiarazione dinamica delle classi RelatedManager. – DavidWinterbottom