Come un ragazzo la cui responsabilità, tra le altre cose, è il test dell'unità in php utilizzando PhpUnit, Closures è anche un grande amico per testare un codice che non è stato scritto nei migliori saluti del test.
Circa due mesi fa ho assunto un team che stava sviluppando un progetto senza test di unità e così ha deciso di dedicare alcuni programmatori per imparare come testare e scrivere i test unitari. Il progetto aveva un localizzatore di servizi dappertutto, e dovevo trovare una soluzione su come risolvere il problema e con l'aiuto di un utente SO Elias Van Ootegem Sono stato in grado di .
Come menzionato nel post, puoi anche simulare i parametri passati e restituiti attraverso un riferimento.
Se hai una funzione da testare:
public function ReturnIntAndChangeOutputParameter(&$outputParameter = false)
{
$outputParameter = true;
return 10;
}
È possibile utilizzare la richiamata per simulare il ritorno del parametro:
$function = function(&$outputParameter)
{
$outputParameter = true;
return 10;
}
$classMock
->expects(/* */)
->method('ReturnIntAndChangeOutputParameter')
->will($this->returnCalback($function));
Infatti, durante la scrittura di unit test, questo è l'unico modo per farlo, PhpUnit converte altrimenti tutte le variabili da passare per valore anche se la definizione è passata per riferimento.