In c # come fanno le persone a svolgere funzioni complesse

3

Ciao sto lavorando a un primo progetto in codice c # MVC. Ho avviato il progetto e creato i Modelli, il frontend del database ecc.

Ora la mia attenzione è arrivata a scrivere qualcosa che può leggere un documento excel e importare i dati nel mio database.

Questo è un compito un po 'complicato, per non dire altro - così ho iniziato a fare un test unitario nel mio progetto di test. Questo ha funzionato correttamente leggendo l'Excel e ottenendo i valori ma perché non aveva accesso al contesto (database) non era sufficiente per completare il lavoro.

Quindi ho creato un nuovo controller / azione nel mio progetto MVC e ho copiato l'inizio del codice. Ho quindi scritto i bit con la scrittura delle informazioni nel database. Questo ha causato problemi. Così ho cambiato l'azione in un metodo di test e il controller in una classe di test. Poi ho potuto produrre tutto quello che volevo usando i comandi Trace e scoprire cosa stava succedendo.

Questa è la cosa giusta da fare? Forse se funziona rimuovi il testClass / testMethod una volta che sono felice e poi restituisco un'azione? Sto pensando di farlo forse se ho altri file che devo elaborare in questo modo.

In che modo le altre persone affrontano questo problema?

Modifica

Grazie, quando dici una lezione in più facendo la roba da excel. Sto usando EPPlus per leggere l'Excel e per me va bene.

Basta parlare con il mio college e fondamentalmente non dovrei usare i metodi di test come forma di debug e invece usare il debugger VS. Che dopo un po 'di tutorial sembra essere il modo.

    
posta Richard Housham 05.10.2016 - 10:54
fonte

1 risposta

3

L'approccio migliore è creare una classe extra, che sta facendo solo la roba Excel . Un'altra classe dovrebbe fare la memorizzazione nel database. È semplicemente separazione delle preoccupazioni .

In questo modo puoi testarlo facilmente nei test unitari e utilizzarlo. Nessuna copia di codice e cose così brutte. (In realtà, se hai bisogno di farlo in quel modo, qualcosa viene progettato nel modo sbagliato.)

Quindi, prima pensate a ciò che la classe ha bisogno di input per fare il suo lavoro probabilmente e passarlo, tramite il costruttore o il parametro del metodo. La prossima cosa, quale dovrebbe essere l'output dei metodi della classe? Alla fine, la cosa più importante, la classe deve funzionare indipendentemente da chi la chiama.

    
risposta data 05.10.2016 - 11:51
fonte