-
-
Notifications
You must be signed in to change notification settings - Fork 74
Description
Comportamento richiesto
Gli unit test possono essere utili per verificare in casi statici la correttezza del funzionamento del codice in alcune istanze, senza dover passare per l'UI o altre componenti più complesse.
Per esempio, si può utilizzare un unit test per verificare che una specifica funzione sum (
Line 39 in 68ca448
function sum($first, $second = null, $decimals = 4) |
La complessità di questo approccio sta nell'interagire con sistemi complessi quali database o API, che negli unit test devono esere "mocked", ovvero bisogna sostituire le relative chiamate con dei finti oggetti che fanno finta di essere gli orginali e si comportano in modo definito dal test.
OpenSTAManager interagisce con il database via query dirette e attraverso i modelli Eloquent di Laravel.
Si può provare ad utilizzare la libreria Mockery (https://github.com/mockery/mockery) combinata con PHPUnit per effettuare il mock di classi complesse come quelle di Eloquent:
https://stackoverflow.com/questions/68221572/how-to-mock-eloquent-model-in-laravel-8-when-calling-a-route-in-phpunit
Un esempio di partenza per questo utilizzo potrebbe essere aggiungere un unit test per la classe Scadenze (https://github.com/devcode-it/openstamanager/blob/master/modules/fatture/src/Gestori/Scadenze.php) che gestice la creazione di più record di tipo Scadenza. Dovremmo usare il mocker di cui sopra per impostare una sostizione dei metodi quali build/where, e quando rilevante restituire degli oggetti di tipo Scadenza creati via Scadenza::factory()->create(...) e relative sintassi ufficiali Laravel per factory.