Press "Enter" to skip to content

Unit testing in JavaScript Part 5 – Mocking continued


buon lunedì mattina oggi siamo
continuando la nostra serie di test unitari
puoi controllare l’episodio completo
playlist cliccando qui e oggi noi
stanno continuando a esplorare beffardo I
sono mpj e stai guardando divertente divertimento
funzione
[Musica]
va bene, diamo un’occhiata a dove
siamo stati la volta scorsa, lasciatemelo chiudere
finestra questa è la funzione di ordine totale
che stavamo lavorando e vediamo qui
con cui abbiamo iniziato un po ‘
chiamare fetch qui e beh non lo è
facendo molto abbiamo anche bisogno di iniziare a fare
qualche risposta analizzando qui, quindi penso
questo è quello che stavamo per fare
continuarlo Ho anche intenzione di aprire
la sandbox in modo che ricordiamo cosa
lo stiamo facendo quindi questo è il tuo modo
fai una chiamata che chiami con cui chiami
una L e quindi si analizza la risposta in
questo caso lo analizziamo che è Jason
e quindi estrarremo il
il tasso di vitalità qui va bene così abbiamo il nostro falso
prendi qui e cosa vogliamo che faccia
è di ritorno una promessa a cui si risolve
due risposte
quindi vedi qui fetch restituisce una promessa
e quella promessa si risolve in questo
oggetto di risposta che a sua volta ha un
metodo jason jason su di esso che a sua volta
questo in realtà restituirà anche a
prometto che si risolverà con questi dati
qui in modo da sapere di lasciare che farlo
in realtà così falso prendere tornerà I
ha promesso il deterrente che si risolve in a
oggetto risposta questa è una risposta
oggetto e che ha adiacente ma
che a sua volta risolve di ordinarlo è un
promettere
restituisce una promessa che si risolve in oh
scusa, ho cambiato la sandbox per bambine
e io risolvo a questa cosa sono i suoi dati
valuta il valore standard che mi consente di copiarlo
in modo che solo aiutarmi qui risolva a
oggetto che ha i tassi che a sua volta ha
un tasso standard che a sua volta ha un
valore che sarà un 19 forse
Ho fatto un errore qui prometto – prometto
Sono ubriaco, lascia che aggiusti quella promessa o
la risoluzione è ovviamente ciò che intendevo II
comunque dato questo poi Blaire dovremmo
in realtà mi aspetto che questo moltiplichi il
il valore di questo ordine del 19% viene aggiornato
il test per farlo quindi aspettatevi un risultato
essere 20 volte 2 volte 1 19 facciamolo
creare un terminale integrato ed eseguire npm
i test vedono cosa otteniamo
ottenere un mi aspettavo di ottenere un fallimento, ma noi
non hmm che è peculiare nuova realtà
non è perché loro sono hmm lasciatemi
vicino che te lo mostrerò
errore ho fatto andando a zoomare leggermente
anche fuori così che possiamo vedere di più
il modo in cui funziona è che quando arriva
a un test sincrono
ha bisogno di sapere quando il test è finito
quindi sai che puoi farlo avendo
queste funzioni stupide e poi chiamarle
quando a quando il test è fatto potremmo
vedere se ha funzionato in realtà e pm
prova sì che funziona ma non lo è
il modo in cui vogliamo farlo perché può
anche al posto di usare questa callback
modello possiamo semplicemente restituire questo questo
promesso qui è un po ‘più senza promesse
sono simpatici, è un bel FBI, è meglio
che la cosa di dun dun così solo lo faremo
cool quindi questi lanceranno un lancio
errore e che si propagherà al
la catena di promessa che scherzerà allora
gestire è davvero elegante ma in entrambi i casi
abbiamo un problema qui ci aspettavamo il
valore per essere qualcosa di simile, ma noi
effettivamente ricevuto 40 perché non abbiamo
codice per questo quindi vediamo qui
l’operazione di recupero simplement questo restituirà un
prometto che si risolve in una risposta e
risponde ha un metodo per JSON che noi
può chiamare quale a sua volta la ricerca ritorna
una promessa che si risolve nell’aggiungere alcuni dati
e che i dati avranno alcuni tassi e
un tasso che è l’aliquota normale di
quello senza valore di 19 quindi andiamo
indietro può implementare i dati puntuali
e questa è una tariffa standard e ha un
Lotto C lì e poi
useremo quella percentuale e volontà
in realtà copiare questa copia questo per ora e
moltiplichi quello con uno e su così prenda
che volte facciamo solo quello per a
minuto ripareremo quello non funzionerà ma
lo aggiusteremo più tardi, facciamo solo un po ‘
i progressi vedono cosa si è rivelato
impossibile leggere la proprietà allora o indefinita
dov’era quello
dove il tojo line tre oh non l’abbiamo fatto
ottenga oh questo è il percorso felice che abbiamo a
un sacco di test che falliscono ora facciamo
in realtà disabilita tutti gli altri test e
concentrarsi su uno al momento perché è
molto bello nella programmazione per risolverne uno
problema alla volta, quindi aggiungendolo solo a
il bene significa che funzionerà solo
questo test che è spesso molto utile quindi
vediamo in questo momento questo non riesce hmm tutto
giusto, sta ancora tornando a 40 anni
è perché non siamo realmente
restituendo questa promessa qui semplicemente
fa questa richiesta e poi procede
a questa linea qui che non è molto
utile quindi premiamo read write return
va bene, facciamolo di nuovo e vediamo
questo aiuta oh si
attesi quarantasette punto 59 ma noi
ricevuto il nostro 760 mm è un po ‘troppo
è perché stiamo moltiplicando per 19
quando dovremmo effettivamente maledire questo
essere 0.19 quindi penso che se ci dividiamo
questo da cento
Penso che sia corretto sia corretto
sì forse vediamo
eseguire di nuovo il test NPM, che diventa 7.6
ora è perché non lo siamo
moltiplicando per zero punto 19 così è
in realtà il 1 più punto zero 19 vedere se
che aiuta a resistere
ah sì, bello ora dovevamo ottenere il verde
valore corretto
Continuo a digitare i test NPM qui, ma ho appena
ricorda che in realtà l’abbiamo definito
un orologio NPM e così spiacente MVM eseguito
guarda che cambierà correre ogni volta che
um ogni volta che salviamo tutto bene così
c’è qualche duplicazione qui no
temo ce ne occuperemo alla fine
ma per ora si mM mettere uno spillo in essa
rimuoverà la duplicazione ma non
fino a quando tutti i test sono verdi
quindi lasciamolo solo rimuoverlo
per vedere gli altri test falliti che sono
non fallendo perché non è definito
mimimi mimimi mimimi mimimi
si sa e questo perché nel
casi, lo facciamo solo noi
voglio davvero farlo se abbiamo un
paese e l’ordine potrebbe non
necessariamente avere un paese forse
l’ utente non l’ha ancora selezionato così noi
voglio solo avere una dichiarazione if qui
e ordina un punto e basta avvolgere
questa cosa in cui sai Wow there we
vai e ora tutti quei test o o
con successo abbiamo un test saltato qui
perché in realtà posso
una specie di prova fittizia qui
questo è carbone come sono io penso a questi
da fare per fare test per così dire perché
Volevo ricordare questo caso ma è così
sembra che abbiamo in realtà accidentalmente
risolto questo perché abbiamo avuto test
rottura per altri motivi, quindi sono
cancellerò davvero ciò di cui non abbiamo bisogno
scrivere quel test che è finito e vendere
noi ora che abbiamo altri test che
basta coprirlo naturalmente anche io penso
che questa funzione vuota qui non lo facciamo
in realtà ne hanno più bisogno, perché
non lo uso solo per quello che posso
basta cambiare la funzione vuota per sapere
per essere onesti facciamolo, quindi vediamo
null o il totale no la funzione attiva
no e no anche lì non abbiamo bisogno
che questo un po ‘più pulito mi sento un po’
un po ‘disorientato qui con tutto questo
beffarsi sembra che non lo sappia
quello che è reale sono scettico, siamo solo noi
qualunque cosa noi stiamo effettivamente testando
qualsiasi cosa qui o stiamo solo creando
questa falsa implementazione falsa e poi
sono solo test per la falsa implementazione
in realtà testiamo qualsiasi logica reale sì
siamo come ho capito come potrebbe
sento che stiamo facendo un bel po ‘ di tempo
fingendo qui facendo questo elaborato finto o
prendi ma quello di cui siamo preoccupati è
per verificare se il totale dell’ordine è
causando l’effetto collaterale che vogliamo che il
prendi e fa le cose giuste
con quello che vorrebbe quell’effetto collaterale
i rendimenti che sono i dati così
quello che sta facendo il test è che lo siamo
interessato al test o al totale
giusto e cosa o il totale fa è loro
provocare come effetto collaterale recuperare
quindi questo effetto collaterale esce ordine
totale per così dire e stavamo ispezionando
che questo sembra corretto, ecco cosa
stiamo facendo e quindi stiamo passando a
risposta di nuovo in ordine totale e poi
stiamo ispezionando ciò che viene fuori ordine
dopo questo per vedere quello che è
corretta
così come la richiesta viene fuori ispezionata
quella richiesta mmm ha un bell’aspetto
ci aspettiamo che sia così che passiamo in a
risposta e quindi ci ha dato quella risposta
ispezionare che hey arriviamo a correggere quello
fuori da questo o come l’ordine corretto
totale dove si moltiplica in ordine
totale è quello che stiamo testando non lo siamo
in realtà non stiamo testando per niente
qui sono scettico lo fa davvero
il lavoro è questo che abbiamo scritto molto
prova ora non volevamo un codice ma noi
non l’ho mai provato contro il
vera API abbiamo costruito è controllato fuori in
il tipo di sandbox ma non l’abbiamo fatto
effettivamente controllare che o il totale corre
correttamente contro la vera API che sono
interessato al fatto che quando sei
facendo TDD con i mock può solo diventare
tipo di sordido TDD prima che stessimo codificando
come Tilly con le funzioni pure che eravamo
scrivendo un po ‘e poi l’abbiamo implementato
nel codice e che avremmo effettivamente vedere
i risultati reali perché non c’erano
effetto collaterale era solo il puro
la funzione e le nostre prove, ma quando siamo
facendo TDD contro i finti siamo solo noi
creando una realtà falsa e poi noi
controlla usando TDD che fanno i nostri test
le cose giuste in questa finta realtà
e seconda di ciò che accade nel
realtà falsa che
il test fa la risposta a quello scusa il
il codice risponde a quello nel modo giusto
ma tutto dipende da noi che abbiamo il
avendo correttamente progettato il falso
realtà che significa che quando siamo
facciamo qualsiasi tipo di derisione che effettivamente facciamo
devo effettivamente testare che abbiamo fatto
Giuste ipotesi nel nostro test di
controllando la roba nella sandbox così
vediamo se possiamo farlo in realtà lo sono
intenzione di fare importare il totale dell’ordine no o
molto totale $ 42 e richiediamo e io sono
chiuderò questo per un po ‘
iniziare quokka su questo file ci andiamo
e chiameremo risultato const const
abbiamo un totale di ordine di chiamata e il
primo argomento ed è passato in un recupero
perché ha bisogno di andare a prendere e stiamo andando
per dargli un qualche tipo di ordine, sì, facciamolo
ruba uno da questo questo test qui vai
torna a sandbox passare in questo qui vedi
quello che succede oh non può leggere correttamente
cosa interessante standard o indefinita
sta succedendo così i tassi non sono definiti
in realtà è solo x
console.log x vedi cosa succede 401
autenticazione richiesta si prega di passare a
chiave API valida aveva nella tua richiesta ah
sì, è perché dobbiamo effettivamente
dare le credenziali dei bisogni qui
quindi abbiamo ancora del lavoro da fare nella nostra
prova fammi chiudere questo per un po ‘e
dai un’occhiata quindi non incolla questo in dio I.
l’ ho appena afferrato per aiutarci ad avere
fianco a fianco tornano alla prova
lo incollerai qui mentre noi
lavoro se tu te se hai un grande schermo
a differenza di me che stavo facendo un youtube
canale puoi semplicemente dividere il tuo editor
side-by-side che è molto utile quando
fare test unitari per mantenere i test
qui al tuo codice di riferimento qui ma
in entrambi i casi questo sarà passato
qui come opzione oggetto di opzioni quando I
chiamiamolo ops almeno e ci aspettiamo
le intestazioni non puntano su intestazioni ops spiacente di rispetto
e ci aspettiamo che tu abbia una chiave API
proprietà ci aspettiamo che ci si aspetti
quello di essere la chiave uno due tre quindi quello che è
chiave uno due tre bene ecco la cosa
anche perché questo usa il processo qui
ora abbiamo un’altra dipendenza e noi
necessario creare un processo falso pure
e passare ciò in cui le funzioni tendono a
avere una dipendenza multipla e quella
ha una N che a sua volta ha una chiave API bat
che a sua volta dovrebbe essere la chiave uno due
tre
quindi in effetti alziamo il terminale
nel terminale toggle e so correre tutto
test non possono leggere intestazioni di proprietà o
non definito sì perché
speravo prima di tutto di non averne uno
oops rimuoviamo questo in realtà
risolvilo prima
così o il totale ora passerà in alcuni
opzioni vedi cosa succede
categoria copia la chiave API non definita
sì certo perché vuole un’intestazione
a castello otteniamo un nuovo problema qui sì chiave
1 2 3 ricevuto indefinito facciamo in realtà
solo la chiave API e poi scriverò
il codice è la chiave qui, quindi è la chiave 1
2 3 inizia a simularlo ma noi vogliamo con noi
può valori di codice non duri come questo in modo
procediamo bene hmm in realtà
ups passando processo qui questo è il
processo oggetto che iniettiamo che ora questo
interromperà tutti gli altri test
quindi disabilitiamo tutto tranne
questo no sono tornato e il dudududu non può
leggere
paese di proprietà di Oh
non definito su ciò che mi confonde
qui sì, in realtà dobbiamo passare
il processo falso altrimenti gli argomenti
l’ordine è corretto processo di clic fresco
perché aspetta un ma appare correttamente è
verde ma è perché abbiamo un
valore falso qui userò il reale
valore dal processo di processo e
[Musica]
di nuovo non tornerò al
test
è quella chiave API oops ed è verde
fresco facciamo solo cambiare questo basta fare
sicuro che si rompa correttamente sì
fantastico rimuoveremo l’ unico e
allora vedremo tutto l’altro
i test falliscono così è perché non lo fanno
avere un processo oggetto questi perché
questi non usano il non usare il fetch
possiamo anche passare null qui
loro non contano
non fare uso di questi casi di test
quindi non guarderò e abbiamo
cinque passati così ora ora lo è davvero
usa il modo corretto sulla chiave API
quindi di sicuro provalo di nuovo, prova questo
di nuovo non è possibile leggere la proprietà paese di on
definiamo ora ok, naturalmente, è necessario
passare il processo nella sandbox come
bene tutto fresco destra sì che non può leggere
standard di proprietà o indefinito
vediamo cosa sta succedendo qui, facciamolo
controlla di nuovo X facendo attenzione alla console
Entra X vedi oh mio Dio cattivo chiede cosa c’è
male, così è stato perché avevo corso
dai crediti II li ho rinfrescati di nuovo
ha una nota per sé non usare un’API di accelerazione
per le esercitazioni cool, lasciami rimuovere questo
log della console
e torna alla sandbox finalmente
funziona davvero bene, quindi abbiamo scritto
alcune attività che hanno completato il tutto
catena risposta e l’analisi della
risposta e quindi abbiamo anche verificato che
i nostri si fanno beffe delle nostre supposizioni sul
realtà falsa che abbiamo creato in realtà
corrisponde alla realtà eseguendo il nostro
codice nella sandbox e sembra vero
come sta funzionando che richiede
celebrazione
e per celebrazione intendo un impegno tutto
questo cambia nel pacchetto di jasa sì
oh, ho appena indentato un codice che continuiamo a mantenere
questo separa anche la sandbox
cambiamenti in realtà diciamo git
impegnare anche quello
e lo script MD non vogliamo che sia così
le mie note di script e voglio rimuovere il
il pacchetto di JSON lì perché lo era
solo quello era solo un invito e noi
voglio tenere quelli in un separato
comitato non mi piace metterti al corrente
correzioni ortografiche e cose del genere
li cuocio in un comitato che voglio io
tipo di vuole fare separatamente noi
test delle bombe a rischio fisso si commettono
i messaggi sono importanti ma non quello
sono importanti e penso che lo siano
davvero importante ma questo non è un
tutorial sui buoni messaggi di commit
Ciao
facciamo cerchiamo di fare questo ancora risolto
problema di indentazione so che sono stato
incoerente ma vediamo vediamo
vediamo così questo è quello che abbiamo aggiunto qui
qualche bella nuova parsing di risposta che abbiamo
qualche duplicazione qui che lo faremo
alla fine, alla fine, abbiamo risolto il problema
abbiamo creato lo standard Wisc o falso
prendi qui controllando che ha usato il
Chiave API passata anche tramite falso
processo e anche noi controlliamo anche questo
usa il tasso qui dal dal
IPI IVA falsa per calcolare l’output
risultato questa cosa qui questo è in realtà
ora ridondante perché lo sai da allora
stiamo controllando l’output che è
completamente dipendente da una raccolta fittizia
in realtà viene chiamato altrimenti
non funzionerebbe questa cosa è giusta
completamente superfluo, quindi lo faremo
rimuovere tale
non è più necessario ora e possiamo anche
rimuovere queste parentesi graffe non lo facciamo
ne abbiamo più bisogno , in realtà facciamo solo
assicurati che i test siano ancora
la corsa non è aggirata quindi lasciami fare
commetti quello rimosso
assegni superflui
Mi sento come se questa iniezione qui risultasse
nel codice extra se non eri un’unità
testarlo e richiedere questa cosa
qui vorrebbe che significherebbe quello
il totale dell’ordine potrebbe aver richiesto
questo da sola all’interno di sé
si sente come un meccanismo di iniezione aggiunge a
un po ‘di codice extra e codice extra
ma mi fa sentire sì , è un po ‘
un po ‘di codice in più, ma non è molto
è carino, è abbastanza chiaro
ciò che sta accadendo qui abbiamo appena richiedendo
infatti stiamo passando in è molto
facile da seguire come avviene l’iniezione
processo è qui a voglio dire ci sono altri
modi in cui potremmo realizzarlo potremmo usarlo
un qualche tipo di scherzo
Globali e cose del genere ma questo
non sarebbe davvero più facile seguirlo
potrebbe salvarci un po ‘di codice ma
sarebbe ancora come se fosse
più fragile mi piace perché è così
estremamente semplice ciò che è
succede solo ha una capacità di
l’override richiede quindi se abbiamo usato fetch
dentro piace come con il bisogno dentro
del totale dell’ordine potremmo usarlo ma noi
avrebbe ancora il problema con con
processo che è una variabile globale così noi
avrebbe bisogno di scherzare con quello
globale ho un vantaggio di questo è che
rende tutte le dipendenze tutte le dipendenze
il comportamento beffardo si comporta nello stesso modo
modo che penso sia carino e io
penso che sia un buon punto
per finire questo episodio sta diventando un pò
a lungo se avete domande
confusioni o vagabondaggi o suggerimenti
su dove dovremmo andare dopo basta postare un
domanda in basso nel campo del commento
o se sei un cliente puoi postarlo
nel forum funfun c’è un link in
la descrizione dell’episodio per un argomento
dedicato a discutere proprio questo
episodio che hai appena visto un episodio
di fun fun function I release di questi
ogni lunedì mattina Oh 800 GMT se tu
stai guardando dal futuro che puoi
controlla l’episodio della prossima settimana qui uh
e se stai guardando dal presente
puoi cliccare qui per iscriverti in questo modo
non ti perdi quell’episodio puoi anche
attiva le notifiche nell’app YouTube
se sei smemorato
Sono MPJ fino al prossimo soggiorno Lunedi mattina
curioso
Please follow and like us: