Saltar al contenido

Jest URL.createObjectURL no es una función

Luego de de esta extensa recopilación de información resolvimos esta cuestión que presentan algunos usuarios. Te dejamos la respuesta y deseamos serte de mucha ayuda.

Solución:

Esto parecería ser tan simple como configurar URL en el Global en broma. Algo como

describe('download', () => 
  const documentIntial =  content: 'aaa' ;
  global.URL.createObjectURL = jest.fn();
  it('msSaveOrOpenBlob should not have been called when navigao is undefined', () => 
    global.URL.createObjectURL = jest.fn(() => 'details');
window.navigator.msSaveOrOpenBlob = jest.fn(() => 'details');
download(documentIntial);
expect(window.navigator.msSaveOrOpenBlob).toHaveBeenCalledTimes(1);
  );
);

Esto debería resultar en una prueba que también puede usar para verificar si global.URL.createObjectURL fue llamado Como nota al margen: también puede encontrarse con un problema similar con window.open Sugeriría burlarse de eso también si este se convierte en el caso.

jsdom, la implementación de JavaScript de WHATWG DOM utilizada por jest aún no implementa este método.

Puede encontrar un ticket abierto sobre este problema exacto en su página de github donde se proporcionan algunas soluciones en los comentarios. Pero si necesita que blobURL funcione, tendrá que esperar a que se resuelva este FR.

Solución alternativa propuesta en los comentarios del problema por broma:

function noOp ()  
if (typeof window.URL.createObjectURL === 'undefined')  
  Object.defineProperty(window.URL, 'createObjectURL',  value: noOp)

Ya que window.URL.createObjectURL no está (todavía) disponible en jest-dom, debe proporcionarle una implementación simulada.

No olvide restablecer la implementación simulada después de cada prueba.

describe("your test suite", () => 
  window.URL.createObjectURL = jest.fn();

  afterEach(() => 
    window.URL.createObjectURL.mockReset();
  );

  it("your test case", () => 
    expect(true).toBeTruthy();
  );
);

Si entiendes que ha sido de utilidad nuestro artículo, sería de mucha ayuda si lo compartes con el resto programadores de esta manera nos ayudas a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *