Estoy usando el navigator
para detectar la configuración de la cámara en el navegador. A continuación se muestra un extracto de mi componente React.
navigator.mediaDevices .getUserMedia({ video: true }) .then(() => { setError(false); }) .catch((e) => { if (e) { setError(true); } });
Me he burlado del objeto del navigator
en mi archivo setupTests.js
global.navigator.mediaDevices = { getUserMedia: jest.fn().mockImplementation(() => Promise.resolve()), };
Seguiría recibiendo este error que dice 'entonces' de undefined
. ¿Alguien podría ayudar?
TypeError: Cannot read property 'then' of undefined 51 | const [error, setError] = useState(false); 52 | > 53 | navigator.mediaDevices | ^ 54 | .getUserMedia({ video: true }) 55 | .then(() => { 56 | setError(false);
Resolví el problema yo mismo. Tuve que crear un archivo simulado e importarlo en mis casos de prueba.
Creó un archivo simulado con el siguiente código __mocks__/navigator.js
const mockMediaDevices = { getUserMedia: jest.fn().mockResolvedValueOnce('fake data'), }; Object.defineProperty(navigator, 'mediaDevices', { writable: true, value: mockMediaDevices, });
En mi archivo de prueba, importé el archivo del navegador simulado.
import __mocks__/navigator'; navigator.mediaDevices.getUserMedia = () => { return new Promise((resolve) => { resolve(); }); }; it('should test something', () => { ... })