Al momento stiamo sviluppando un'API pubblica per la nostra app. I metodi su questa API pubblica stanno principalmente mettendo insieme funzionalità in diversi angoli del sistema. Un esempio potrebbe essere: (i nomi sono stati modificati per proteggere gli innocenti)
public String createAppUser(String app, String name, String email, byte[] pwd) {
Application appl = applicationModule.retrieve(app);
User user = userModule.createUser(name,email);
Digest digest = cryptoModule.createDigest(pwd);
authenticationModule.authorize(user,appl,digest);
accountingModule.createAccount(user,appl);
return user.getId();
}
Quando l'unità prova una cosa del genere, il test unitario è solo una copia dello stesso flusso di lavoro, con qualche rumore aggiuntivo per configurare mock, oggetti e convalidare le interazioni. Anche se trovo essenziale il test unitario delle parti algoritmiche dell'applicazione, in questa parte del "flusso di lavoro" trovo il test unitario una ripetizione del flusso di lavoro in forma di domanda. Seguendo il principio ASCIUTTO, sembra una perdita di tempo. Quali sono le migliori pratiche in questi casi?
Dato che questi metodi fanno parte di un'API pubblica, troverei più utile testarli attraverso un client e verificare che gli effetti del sistema si siano verificati. Questo è più "test di sistema" o "test di integrazione" e oltre lo scopo del test unitario.
Quale sarebbe il miglior approccio di prova in questo contesto?