Adds toEqualJSX
and toIncludeJSX
methods to jasmine assertions.
Uses Algolia's react-element-to-jsx-string under the hood.
npm install -D jasmine-expect-jsx
<script src="/path/to/jasmine-expect-jsx.js"></script>
Integration is easy with the karma-jasmine-expect-jsx plugin and it provides colored output.
Also you can just add 'node_modules/jasmine-expect-jsx/dist/jasmine-expect-jsx.js'
to files section of your config.
require('jasmine-expect-jsx');
- Add
setupTestFrameworkScriptFile
inpackage.json
{
...
"jest": {
"setupTestFrameworkScriptFile": "<rootDir>/jestSetup.js"
}
...
}
- Import
jasmine-expect-jsx
insetupTestFrameworkScriptFile
file
// jestSetup.js
require('jasmine-expect-jsx');
The following tests are all passing:
class TestComponent extends React.Component {}
// equalJSX
expect(<div />).toEqualJSX(<div />);
expect(<TestComponent />).toEqualJSX(<TestComponent />);
expect(<div />).not.toEqualJSX(<span />);
expect(<TestComponent />).not.toEqualJSX(<span />);
// includeJSX
expect(<div><span>Hello World!</span></div>).toIncludeJSX(<span>Hello World!</span>);
expect(<TestComponent />).toIncludeJSX(<SomeSubComponent />); // assuming <SomeSubComponent /> is rendered by TestComponent's render
expect(<div><span>Hello World!</span></div>).not.toIncludeJSX(<span>Hello World!</span>);
expect(<TestComponent />).not.toIncludeJSX(<SomeSubComponent />); // assuming <SomeSubComponent /> is not rendered by TestComponent's render