È possibile testare XHR in Jest senza pacchetti aggiuntivi. Questo è funzione di supporto che crea oggetto fittizio per XMLHttpRequest:
let open, send, onload, onerror;
function createXHRmock() {
open = jest.genMockFn();
// be aware we use *function* because we need to get *this*
// from *new XmlHttpRequest()* call
send = jest.genMockFn().mockImpl(function(){
onload = this.onload.bind(this);
onerror = this.onerror.bind(this);
});
const xhrMockClass = function() {
return {
open,
send
};
};
window.XMLHttpRequest = jest.genMockFn().mockImpl(xhrMockClass);
}
e si può utilizzare in test come segue:
it('XHR success',() => {
createXHRmock();
// here you should call GET request
expect(open).toBeCalledWith('GET', 'http://example.com', true);
expect(send).toBeCalled();
// call onload or onerror
onload();
// here you can make your assertions after onload
});
fonte
2015-11-04 17:02:16
credo che questo sia ormai 'jest.fn() mockImplementation' dalle [doc] (https://facebook.github.io /jest/docs/en/mock-function-api.html#mockfnmockimplementationfn) – Peter