method-mocks
v1.1.0
Published
Works with existing mocking and testing frameworks (e.g. Jest) to make method mocking easier.
Downloads
5
Readme
method-mocks
Works with existing mocking and testing frameworks (e.g. Jest) to make method mocking easier.
Example (testing a React Native API):
// App.js
import { Alert } from 'react-native'
export const alertUser = msg => Alert.alert(msg)
// App.test.js
import { alertUser } from './App'
// This will get hoisted to the top at runtime by Jest
jest.mock('react-native', () => ({
Alert: require('method-mocks').setupMethodMocks({
SOME_KEY: 1
})
}))
describe('.alertUser()', () => {
let mock
beforeEach(() => {
/* Even though we're mocking an external module we're able to set the
mock for a given method on each iteration */
mock = Alert.setMethodMock('alert', jest.fn())
})
afterEach(() => {
/* clean-up! */
Alert.clearAllMethodMocks()
})
it('calls through to native alert', () => {
alertUser('test')
expect(mock).toHaveBeenCalledWith('test')
})
})
Installation
npm i method-mocks
API/Usage
setupMethodMocks(obj)
This will add the following methods to the passed-in object:
{
/**
* Create a method of the given name and set it to be the given mock function.
*
* If method already exists then it's existing value will be saved prior to
* being overwritten with the given mock.
*
* @param {String} methodName The name of the method to mock.
* @param {Function} mockFn The mock function.
*
* @return the mock function
*/
setMethodMock: (methodName, mockFn),
/**
* Remove mocked method of the given name.
*
* If the method had already existed prior to getting mocked then this
* original implementation will be restored, else the method will be deleted.
*
* @param {String} methodName The name of the method.
*/
clearMethodMock: (methodName),
/**
* Remove all mocked methods.
*
* This is equivalent to calling `clearMethodMock()` for each mocked method,
* one-by-one.
*/
clearAllMethodMocks: ()
}
The return value will be the original object itself.
Development
- Lint:
yarn lint
- Test:
yarn test
- Build:
yarn build
Contributors
All contributions welcome. Please see CONTRIBUTING.md