Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposta per unit test #1567

Open
Dasc3er opened this issue Dec 20, 2024 · 0 comments
Open

Proposta per unit test #1567

Dasc3er opened this issue Dec 20, 2024 · 0 comments
Labels
miglioria Proposte di miglioramenti richiesta di aiuto Modfiche che richiedono maggiore supporto generale

Comments

@Dasc3er
Copy link
Contributor

Dasc3er commented Dec 20, 2024

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 (

function sum($first, $second = null, $decimals = 4)
) mantenga un comportamento corretto, effettuando la somma di singoli numeri (interi e float), liste e numeri, liste e liste di numeri.

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.

@Pek5892 Pek5892 added richiesta di aiuto Modfiche che richiedono maggiore supporto generale miglioria Proposte di miglioramenti labels Dec 20, 2024
@Pek5892 Pek5892 added this to the 💡 OSM Future milestone Dec 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
miglioria Proposte di miglioramenti richiesta di aiuto Modfiche che richiedono maggiore supporto generale
Projects
None yet
Development

No branches or pull requests

2 participants