Ho un'app Django chiamata "editore", si collega a vari segnali nel mio progetto django e quando li riceve invia un messaggio a una coda rabbitmq. Quello che voglio fare è essere in grado di verificare che il mio codice di installazione si colleghi ai segnali corretti.Verificare di essere connesso a un particolare segnale in Django
La mia struttura app assomiglia:
publisher
- __init__.py
- signals.py
- tests.py
mia __init__.py assomiglia:
import signals
e la mia signals.py:
def receiver_function(*args, **kwargs):
#Does rabbitmq stuff
my_interesting_signal.connect(receiver_function)
I ha pensato la patch funzione del ricevitore, e controllando che il mock è stato chiamato quando ho inviato il segnale:
tests.py:
class SignalsTeste(TestCase):
def_test_connection(self):
with patch('publisher.signals.receiver_function') as receiver_mock:
my_interesting_signal.application_created.send(None)
self.assertEquals(receiver_mock.call_count, 1)
Tuttavia poiché il modulo segnali viene importato, e quindi i collegamenti di segnale sono realizzati prima che i test vengono eseguiti, questo approccio non funziona come le connessioni sono effettuate prima che la funzione è patch ......
Qualcuno può suggerire una strategia alternativa?
Non so se ho capito bene ma inseguo i miei segnali scrivendo su un registro nella funzione ricevitore def receiver_function (* args, ** kwargs): – PepperoniPizza