jsx-chai
A port of Algolia's expect-jsx for the Chai assertion library.
It uses algolia/react-element-to-jsx-string in the background to turn React elements into formatted strings.
What's different from chai-jsx? The chai-jsx project was started after this one, but it made it to npm faster. This project was renamed to jsx-chai, and has a few key differences:
- The
jsx
flag is not necessary when checking equality. If the value is a JSX element and thedeep
flag is enabled (either by using it explicitly, or by usingeql
instead ofequal
) then JSX comparison is performed. - A
to.be.jsx
assertion is included. - A browser bundle is included in the dist folder.
Installation
First make sure you have the peerDependencies installed:
npm install react
Then install jsx-chai:
npm install jsx-chai --save-dev
Assertions
JSX comparison will kick in on deep equality checks, but normal strict equality will apply when the 'deep' flag is not used.
tobejsx tonotbejsx todeep tonotdeep to tonot to tonot
Note: include.keys()
calls will look for normal object properties, and will
not use JSX comparison.
Usage
Here's an example using mochajs/mocha.
chai Component {}
It looks like this when ran:
A note about functions
to.deep.equal
and to.eql
will not check for function references, it only
checks that if a function
was expected somewhere, there's also a function in
the actual data.
It's your responsibility to then unit test those functions.
A note about the browser bundle
If you're using the browser bundle in dist with standard browser globals, make sure you are using the un-minified development version of React with addons. This library uses React.addons.TestUtils, which is not available in the production build or the build without addons.