Funzioni Mock
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Le funzioni mock sono anche conosciute come "spie" perché permettono di osservare il comportamento di una funzione chiamata indirettamente da altro codice, andando oltre il semplice test dell'output. Puoi creare una funzione mock con jest.fn(). Se non viene fornita un'implementazione, la funzione mock restituirà undefined quando invocata.
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Gli esempi TypeScript in questa pagina funzioneranno come documentato solo se importi esplicitamente le API di Jest:
import {expect, jest, test} from '@jest/globals';
Consulta la guida Per iniziare per i dettagli su come configurare Jest con TypeScript.
Metodi
- Riferimento
mockFn.getMockName()mockFn.mock.callsmockFn.mock.resultsmockFn.mock.instancesmockFn.mock.contextsmockFn.mock.lastCallmockFn.mockClear()mockFn.mockReset()mockFn.mockRestore()mockFn.mockImplementation(fn)mockFn.mockImplementationOnce(fn)mockFn.mockName(name)mockFn.mockReturnThis()mockFn.mockReturnValue(value)mockFn.mockReturnValueOnce(value)mockFn.mockResolvedValue(value)mockFn.mockResolvedValueOnce(value)mockFn.mockRejectedValue(value)mockFn.mockRejectedValueOnce(value)mockFn.withImplementation(fn, callback)
- Proprietà sostituite
- Utilizzo con TypeScript
Riferimento
mockFn.getMockName()
Restituisce il nome stringa della funzione mock impostato chiamando .mockName().
mockFn.mock.calls
Un array contenente gli argomenti di tutte le chiamate effettuate a questa funzione mock. Ogni elemento dell'array è un array di argomenti passati durante la chiamata.
Esempio: una funzione mock f chiamata due volte con gli argomenti f('arg1', 'arg2') e poi f('arg3', 'arg4') avrà un array mock.calls simile a:
[
['arg1', 'arg2'],
['arg3', 'arg4'],
];
mockFn.mock.results
Un array contenente i risultati di tutte le chiamate effettuate a questa funzione mock. Ogni elemento è un oggetto con una proprietà type e una proprietà value. type può essere uno dei seguenti:
-
'return'- Indica che la chiamata è completata con un ritorno normale. -
'throw'- Indica che la chiamata è completata lanciando un valore. -
'incomplete'- Indica che la chiamata non è ancora completata. Si verifica quando si testa il risultato all'interno della funzione mock stessa o in una funzione da essa chiamata.
La proprietà value contiene il valore ritornato o lanciato. value è undefined quando type === 'incomplete'.
Esempio: una funzione mock f chiamata tre volte, che restituisce 'result1', lancia un errore e poi restituisce 'result2', avrà un array mock.results simile a:
[
{
type: 'return',
value: 'result1',
},
{
type: 'throw',
value: {
/* Error instance */
},
},
{
type: 'return',
value: 'result2',
},
];
mockFn.mock.instances
Un array contenente tutte le istanze di oggetti create da questa funzione mock usando new.
Esempio: una funzione mock istanziata due volte avrà il seguente array mock.instances:
const mockFn = jest.fn();
const a = new mockFn();
const b = new mockFn();
mockFn.mock.instances[0] === a; // true
mockFn.mock.instances[1] === b; // true
mockFn.mock.contexts
Un array contenente i contesti di tutte le chiamate della funzione mock.
Un contesto è il valore this che una funzione riceve quando chiamata. Il contesto può essere impostato con Function.prototype.bind, Function.prototype.call o Function.prototype.apply.
Per esempio:
const mockFn = jest.fn();
const boundMockFn = mockFn.bind(thisContext0);
boundMockFn('a', 'b');
mockFn.call(thisContext1, 'a', 'b');
mockFn.apply(thisContext2, ['a', 'b']);
mockFn.mock.contexts[0] === thisContext0; // true
mockFn.mock.contexts[1] === thisContext1; // true
mockFn.mock.contexts[2] === thisContext2; // true
mockFn.mock.lastCall
Un array contenente gli argomenti dell'ultima chiamata effettuata a questa funzione mock. Se la funzione non è stata chiamata, restituisce undefined.
Esempio: una funzione mock f chiamata due volte con gli argomenti f('arg1', 'arg2') e poi f('arg3', 'arg4') avrà un array mock.lastCall simile a:
['arg3', 'arg4'];
mockFn.mockClear()
Cancella tutte le informazioni memorizzate negli array mockFn.mock.calls, mockFn.mock.instances, mockFn.mock.contexts e mockFn.mock.results. Utile per ripulire i dati d'uso tra due asserzioni.
L'opzione di configurazione clearMocks è disponibile per cancellare automaticamente i mock prima di ogni test.
Attenzione: mockFn.mockClear() sostituirà completamente mockFn.mock, non solo resetterà i valori delle sue proprietà! Dovresti quindi evitare di assegnare mockFn.mock ad altre variabili, temporanee o meno, per non rischiare di accedere a dati obsoleti.