An identity object using ES6 proxies. Useful for mocking webpack imports like CSS Modules.
JavaScript
Switch branches/tags
Nothing to show
Clone or download
Latest commit 62bf795 Aug 3, 2016

README.md

identity-obj-proxy Build Status npm version test coverage

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://facebook.github.io/jest/docs/tutorial-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'