Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

156
Vistas
Obteniendo un error indefinido al operar en un objeto de navegador de ventana simulado

Tengo el siguiente componente donde, al hacer clic en el botón, busco realizar una copia en el portapapeles para el valor del texto.

Esto funciona bien y busca escribir una prueba para ello. Pero actualmente con mi prueba, sigue recibiendo el siguiente error:

Error: no capturado [Error de tipo: no se puede leer la propiedad 'entonces' de indefinido]

También probé otros ejemplos sugeridos aquí con el mismo resultado.

¿Cómo burlarse de navigator.clipboard.writeText() en Jest?

¿Podría obtener ayuda sobre lo que estoy haciendo mal, por favor? Gracias.

mi componente

 import React, { useState } from 'react'; import { Button } from '../../Button'; const A = ({ text, }) => { const [copyStatus, setCopyStatus] = useState(''); const onClick = () => { window.navigator.clipboard.writeText(text) .then(() => { setCopyStatus('yes'); }) .catch(() => setCopyStatus('no')); }; const CopyBtn = () => ( <Button onClick={onClick}> Click </Button> ); return (<div> {CopyBtn} </div>); }; export default A;

Mi prueba

 import React from 'react'; import { mount } from 'enzyme'; import A from '../../../src/components/A'; jest.mock('../../Button', () => ({ Button: 'button', })); Object.defineProperty(navigator, "clipboard", { value: { writeText: () => {}, }, }); jest.spyOn(navigator.clipboard, "writeText"); describe('A component test', () => { const props = { text: 'mock', }; it('should copy to clipboard as expected', () => { const renderedModule = mount(<A {...props} />); // simulate does work. Which triggers the attempt to call navigator.clipboard.writeText and fails. renderedModule.find('button').simulate('click'); expect(navigator.clipboard.writeText).toBeCalledTimes(1); }); });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La función simulada se está llamando realmente y necesita devolver una Promesa.

Podrías usar jest.fn para simular el comportamiento de la función.

 Object.defineProperty(navigator, "clipboard", { value: { // Provide mock implementation writeText: jest.fn().mockReturnValueOnce(Promise.resolve(42)), }, });

Entonces no necesitas llamar a jest.spyOn .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda