Skip to content
An identity object using ES6 proxies. Useful for mocking webpack imports like CSS Modules.
JavaScript
Branch: master
Clone or download
keyz Merge pull request #11 from ayan4m1/patch-1
Fix broken link in README.md
Latest commit 06716fb Apr 7, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src bumped Jest and fixed test path Aug 3, 2016
.babelrc edge case: the `__esModule` field gets read Aug 3, 2016
.eslintrc edge case: the `__esModule` field gets read Aug 3, 2016
.gitignore fixed build process May 29, 2016
.travis.yml fixed deps May 29, 2016
LICENSE Initial commit Dec 24, 2015
README.md Fix broken link in README.md Apr 7, 2019
package.json 3.0.0 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://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'
You can’t perform that action at this time.