Proposta per unit test #1567
Labels
miglioria
Proposte di miglioramenti
richiesta di aiuto
Modfiche che richiedono maggiore supporto generale
Milestone
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 (
openstamanager/lib/common.php
Line 39 in 68ca448
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.
The text was updated successfully, but these errors were encountered: