Mock your React Components for the amazing snapshot testing. This package allows you to avoid lots of braking tests of parent components if one child was changed internally.
anyJest.test.js
:
/**
* Function mock component and make string representation
* @param {String} componentName Name of the Component
* @param {Any} props properties, which component receives
* @param {Boolean} emoji? flag to use rocket or not
* @return {String} string representation of component
*/
function mockComponent (componentName, props, emoji) { [ 'native code' ] }
// using standard jest mocking mechanism
jest.mock('../../../pathToYourComponentWhichShouldBeMocked', () => ({
Component: (props) => mockComponent('Component', props, true),
}));
tests/DemoComponent.test.js
:
import { create } from 'react-test-renderer';
import { mockComponent } from 'jest-react-component-mock';
import { oneMock, secondMock, thirdMock } from '../mocks';
import { DemoComponent } from '../DemoComponent';
jest.mock('../../../components/MyCoolItem', () => ({
MyCoolItem: (props) => mockComponent('MyCoolItem', props, 🚀),
}));
describe('DemoComponent', () => {
it('should create simple "DemoComponent"', () => {
const component = create(
<DemoComponent
prop1={oneMock}
prop2={secondMock}
prop3={thirdMock}
/>,
);
expect(component.toJSON()).toMatchSnapshot();
});
tests/__snapshots__/DemoComponent.test.js.snap
exports[`should create simple "DemoComponent" component`] = `
<div
className="DemoClass"
>
<div
className="title"
>
Your Title:
</div>
<div
className="lol"
>
<div
className="content"
>
🚀
≺MyCoolItem
config={{"id": "113wsdfsdf"}}
handker={'myHandler'}
/>
🚀
</div>
</div>
</div>
`;
tests/DemoComponent.test.js
:
import { create } from 'react-test-renderer';
import { mockComponent } from 'jest-react-component-mock';
import { oneMock, secondMock, thirdMock } from '../mocks';
import { DemoComponent } from '../DemoComponent';
jest.mock('../../../components/MyCoolItem', () => ({
MyCoolItem: (props) => mockComponent('MyCoolItem', props),
}));
describe('DemoComponent', () => {
it('should create simple "DemoComponent"', () => {
const component = create(
<DemoComponent
prop1={oneMock}
prop2={secondMock}
prop3={thirdMock}
/>,
);
expect(component.toJSON()).toMatchSnapshot();
});
tests/__snapshots__/DemoComponent.test.js.snap
exports[`should create simple "DemoComponent" component`] = `
<div
className="DemoClass"
>
<div
className="title"
>
Your Title:
</div>
<div
className="lol"
>
<div
className="content"
>
≺MyCoolItem
config={{"id": "113wsdfsdf"}}
handker={'myHandler'}
/>
</div>
</div>
</div>
`;