unitarias unit tutorial test que pruebas node ejemplo docs unit-testing mocking jestjs

unit-testing - unit - que es jest js



Jest: Cambia la salida del simulacro manual para diferentes pruebas dentro de un conjunto de prueba (0)

Digamos que tengo los siguientes dos archivos:

// index.js ... import { IS_IOS } from ''common/constants/platform''; ... export const myFunction = () => (IS_IOS ? ''foo'' : ''bar''); // index.test.js ... import { myFunction } from ''./index''; jest.mock(''common/constants/platform'', () => ({ IS_IOS: true })); describe(''My test'', () => { it(''tests behavior on IOS'', () => { expect(myFunction()).toBe(''foo''); }); // --> Here I want to change the value of IS_IOS to false it(''tests behavior if NOT IOS'', () => { expect(myFunction()).toBe(''bar''); }); });

Como ve, mi función de burla devuelve IS_IOS: true . Quiero que devuelva IS_IOS: false después de mi primera prueba. ¿Como podría hacerlo?

También intenté una adaptación de la solución aquí, pero no pude hacer que funcione, porque allí el simulacro devuelve una función:

module.exports = { foo: jest.genMockFunction(); }

mientras que mi simulacro debería devolver un valor booleano que no se llama dentro del archivo que estoy probando. Eso es lo que hice aquí:

// common/constants/__mock__/platform export const setIsIos = jest.fn(val => (IS_IOS = val)); export let IS_IOS; // index.test.js ... import { IS_IOS, setIsIos } from ''common/constants/platform''; jest.mock(''common/constants/platform''); describe(''My test'', () => { setIsIos(''foo''); it(''tests behavior on IOS'', () => { expect(myFunction()).toBe(''foo''); }); setIsIos(''bar''); it(''tests behavior if NOT IOS'', () => { expect(myFunction()).toBe(''bar''); }); });

Curiosamente cuando el registro de la console.log(IS_IOS); , es decir, console.log(IS_IOS); Obtengo los valores esperados. Sin embargo, la prueba parece usar el valor original, es decir, undefined .