identity-obj-proxy
An identity object using ES6 proxies. Useful for mocking webpack imports. For instance, you can tell Jest to mock this object as imported CSS modules; then all your className
lookups on the imported styles
object will be returned as-is.
npm install identity-obj-proxy
Real world example Wait what does that even mean
tl;dr
For a React component like
import React, { Component } from 'react';
import styles from './App.css'; // CSS Modules here
export default class App extends Component {
render() {
return (
<div className={styles.root}>
<h1 className={styles.hello}>Hello, world!</h1>
</div>
);
}
}
we can generate a snapshot as below (notice that the class names get correctly mocked):
exports[`test App renders correctly 1`] = `
<div
className="root">
<h1
className="hello">
Hello, world!
</h1>
</div>
`;
For more information, please take a look at https://github.com/keyanzhang/jest-css-modules-example/ and https://jestjs.io/docs/en/webpack.html.
Requirement
No flag is required for Node.js v6.*
; use node --harmony_proxies
flag for v5.*
and v4.*
.
Example
import idObj from 'identity-obj-proxy';
console.log(idObj.foo); // 'foo'
console.log(idObj.bar); // 'bar'
console.log(idObj[1]); // '1'