tag script react helmet has div corresponding closing reactjs react-native jestjs enzyme

reactjs - script - react helmet sync



¿Cómo cambiar el valor de retorno de la función simulacro de jest en cada prueba? (3)

Tengo un módulo simulado como este en mi archivo de prueba de componentes

jest.mock(''../../../magic/index'', () => ({ navigationEnabled: () => true, guidanceEnabled: () => true }));

estas funciones se llamarán en la función de procesamiento de mi componente para ocultar y mostrar alguna característica específica.

Quiero tomar una instantánea de diferentes combinaciones del valor de retorno de esas funciones simuladas.

Supongo que tengo un caso de prueba como este

it(''RowListItem should not render navigation and guidance options'', () => { const wrapper = shallow( <RowListItem type="regularList" {...props} /> ); expect(enzymeToJson(wrapper)).toMatchSnapshot(); });

para ejecutar este caso de prueba, quiero cambiar las funciones del módulo simulado que devuelven valores false como este dinámicamente

jest.mock(''../../../magic/index'', () => ({ navigationEnabled: () => false, guidanceEnabled: () => false }));

porque ya estoy importando el componente RowListItem una vez, así que mi módulo simulado no se volverá a importar. por lo que no va a cambiar. Como puedo resolver esto ?


Me costó mucho conseguir que las respuestas aceptadas funcionaran: mis equivalentes de navigationEnabled mockReturnValueOnce y guidanceEnabled mockReturnValueOnce no estaban definidos cuando intenté llamar a mockReturnValueOnce .

Esto es lo que tenía que hacer:

En ../../../magic/__mocks__/index.js :

export const navigationEnabled = jest.fn(); export const guidanceEnabled = jest.fn();

en mi archivo index.test.js :

jest.mock(''../../../magic/index''); import { navigationEnabled, guidanceEnabled } from ''../../../magic/index''; import { functionThatReturnsValueOfNavigationEnabled } from ''moduleToTest''; it(''is able to mock'', () => { navigationEnabled.mockReturnValueOnce(true); guidanceEnabled.mockReturnValueOnce(true); expect(functionThatReturnsValueOfNavigationEnabled()).toBe(true); });


Puedes burlarte del módulo para que devuelva espías e importarlo a tu prueba:

import {navigationEnabled, guidanceEnabled} from ''../../../magic/index'' jest.mock(''../../../magic/index'', () => ({ navigationEnabled: jest.fn(), guidanceEnabled: jest.fn() }));

Luego, más adelante, puede cambiar la implementación real utilizando mockImplementation

navigationEnabled.mockImplementation(()=> true) //or navigationEnabled.mockReturnValueOnce(true);

y en la proxima prueba

navigationEnabled.mockImplementation(()=> false) //or navigationEnabled.mockReturnValueOnce(false);


lo que quieres hacer es

import { navigationEnabled, guidanceEnabled } from ''../../../magic/index''; jest.mock(''../../../magic/index'', () => ({ navigationEnabled: jest.fn(), guidanceEnabled: jest.fn() })); describe(''test suite'', () => { it(''every test'', () => { navigationEnabled.mockReturnValueOnce(value); guidanceEnabled.mockReturnValueOnce(value); }); });

Puede ver más sobre estas funciones aquí => https://facebook.github.io/jest/docs/mock-functions.html#mock-return-values