If I understand your question correctly, the assertion doesn't actually happen until after @dog.emit_point is called.  Inside emit_point, when metric_svc.submit is called, the assertions run on it's inputs, sort of like an asynchronous test with a callback.