Sono nuovo per i test, ma mi rendo conto di quanto sia importante. Il problema principale è che la mia azienda non ha alcun supporto top-down per i test. Questo è che non abbiamo alcun test unitario e solo un po 'di test umani (spero di usare i giusti termini).
Ho cercato di iniziare i test qui e devo farlo in modo sottile perché spesso mi viene chiesto "quando verrà eseguito X" e quindi non posso iniziare la settimana (s) lungo progetto di scrittura di test per tutti del nostro codice legacy. Quale avrebbe bisogno di essere riscritto solo per fornire cuciture per i test (se ho il concetto di "cuciture" giusto). Posso, tuttavia, introdurre un po 'di tempo per testare una funzione. O almeno penso di poter.
Sto scrivendo un codice che sostanzialmente elabora un bel po 'di dati e poi lo esegue utilizzando D3. Vorrei scrivere un test per una delle funzioni più importanti, binData
. Prende un argomento opzionale (la data di inizio del binning da) e accede ad alcune proprietà come this.rows
e this.timestamps
.
Come potrei fare per farlo?
Penso che avrò bisogno di creare un oggetto fittizio per contenere this.data
e this.timestamps
(e le altre proprietà accessibili). In effetti, immagino diversi oggetti mock diversi che permettano di testare diversi set di dati. Ma a parte questo sono un po 'bloccato. In termini di quadri, ho sentito parlare di Mocha e Jasmine e dei voti, ma non so quale sarebbe il migliore.
Inoltre non so come legarmi alla massiccia (e complessa) gerarchia di classi e moduli e ad incontrare le dipendenze di ogni oggetto. Cioè, la funzione binData
si trova in un file chiamato, per esempio, dataBinner.js
che richiede tutte le altre funzioni di altri file, ma non include esplicitamente qualcosa su di esso. Invece, esso stesso è incluso in un file "manager" che include tutto ciò che sarà necessario a dataBinner.js e agli altri moduli. Suppongo che dovrò trovare un modo per istanziare tutto il necessario per testare binData
.
Non ho paura di fare un po '(o molto) di lettura per capire meglio le cose. Sarebbe molto apprezzato qualsiasi aiuto riguardante questo specifico compito di scrivere un test per binData
o la più ampia domanda su come implementare lentamente i test in un luogo non adatto ai test.
Chiarimento
Sono a bordo al 100%, test-saggio. So che è importante e so che la mia azienda non è corretta non avendo test. Ci si aspetterebbe che le e-mail dicessero che "la regressione fissa causata dalla correzione del bug 1413" avrebbe attivato qualcosa. O che le cose che non dovrebbero durare troppo a lungo dovrebbero essere troppo lunghe (perché è un codice legacy degli spaghetti).
Quello che sto chiedendo è dato che come faccio a testare la mia unica funzione che si basa sul codice spaghetti precedente. Cioè, come fa qualcuno a iniettare un po 'di test in un posto senza di esso? Immagino che dovrò scrivere il mio framework di test perché dovrò creare dei mock per il codice legacy degli spaghetti. In modo che io possa istanziare il mio oggetto e chiamare la mia funzione al di fuori dell'ambito dell'applicazione.