Skip to content

Instantly share code, notes, and snippets.

@jmacqueen
Forked from dndhm/AppWithContext.js
Created January 15, 2019 15:54
Show Gist options
  • Save jmacqueen/6b2fd375decbba96223f13a1b5b20eb7 to your computer and use it in GitHub Desktop.
Save jmacqueen/6b2fd375decbba96223f13a1b5b20eb7 to your computer and use it in GitHub Desktop.
React Context.Consumer mocking
import React, { Component } from 'react';
import FruitContext from './FruitContext';
import FruityComponent from './FruityComponent';
export class App extends Component {
state = {
fruit: 'apple',
}
render() {
return (
<FruitContext.Provider value={this.state.fruit}>
<FruityComponent />
</FruitContext.Provider>
);
}
}
import { createContext } from 'react';
export default createContext('banana');
import React from 'react';
import FruitContext from './FruitContext';
import FruityHeader from './FruityHeader';
export default () => (
<FruitContext.Consumer>
{fruit => (
<FruityHeader>{fruit}</FruityHeader>
)}
</FruitContext.Consumer>
);
import React from 'react';
import { mount } from 'enzyme';
import FruityComponent from './FruityComponent';
const mockContext = jest.fn();
jest.mock('./FruitContext', () => ({
Consumer: ({ children }) => children(mockContext()),
}));
describe('FruityComponent', () => {
beforeEach(() => {
mockContext.mockReset();
});
['banana', 'apple', 'kumquat'].map(fruit =>
test(`should pass ${fruit} context to FruityHeader`, () => {
mockContext.mockReturnValue(fruit);
const fruityHeader = mount(<FruityComponent />).find('FruityHeader');
expect(fruityHeader.prop('children')).toEqual(fruit);
}));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment