J'ai un module simulé comme celui-ci dans mon fichier de test de composant
jest.mock('../../../magic/index', () => ({
navigationEnabled: () => true,
guidanceEnabled: () => true
}));
ces fonctions seront appelées dans la fonction de rendu de mon composant pour masquer et afficher certaines caractéristiques spécifiques.
Je veux prendre un instantané sur différentes combinaisons de la valeur de retour de ces fonctions fictives.
pour suppose que j'ai un cas de test comme celui-ci
it('RowListItem should not render navigation and guidance options', () => {
const wrapper = shallow(
<RowListItem type="regularList" {...props} />
);
expect(enzymeToJson(wrapper)).toMatchSnapshot();
});
pour exécuter ce scénario de test, je souhaite modifier les fonctions du module factice renvoyer les valeurs à false
comme ceci de manière dynamique
jest.mock('../../../magic/index', () => ({
navigationEnabled: () => false,
guidanceEnabled: () => false
}));
parce que j'importe déjà une fois le composant RowListItem
pour que mon module factice ne soit plus importé. donc ça ne changera pas. Comment puis-je résoudre ça ?
Vous pouvez vous moquer du module pour qu'il retourne des espions et l'importer dans votre test:
import {navigationEnabled, guidanceEnabled} from '../../../magic/index'
jest.mock('../../../magic/index', () => ({
navigationEnabled: jest.fn(),
guidanceEnabled: jest.fn()
}));
Ensuite, vous pourrez modifier l’implémentation réelle à l’aide de mockImplementation
.
navigationEnabled.mockImplementation(()=> true)
//or
navigationEnabled.mockReturnValueOnce(true);
et dans le prochain test
navigationEnabled.mockImplementation(()=> false)
//or
navigationEnabled.mockReturnValueOnce(false);
ce que tu veux faire c'est
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);
});
});
vous pouvez en savoir plus sur ces fonctions ici => https://facebook.github.io/jest/docs/mock-functions.html#mock-return-values