Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.
<img
alt="downloads:?"
src="https://img.shields.io/npm/dm/chai.svg?style=flat-square"
/>
<img
alt="node:?"
src="https://img.shields.io/badge/node-%3E=4.0-blue.svg?style=flat-square"
/>
<img
alt="Join the Slack chat"
src="https://img.shields.io/badge/slack-join%20chat-E2206F.svg?style=flat-square"
/>
<img
alt="Join the Gitter chat"
src="https://img.shields.io/badge/gitter-join%20chat-D0104D.svg?style=flat-square"
/>
<img
alt="OpenCollective Backers"
src="https://opencollective.com/chaijs/backers/badge.svg?style=flat-square"
/>
For more information or to download plugins, view the documentation.
What is Chai?
Chai is an assertion library, similar to Node's built-inassert
. It makes testing much easier by giving you lots of assertions you can run against your code.Installation
Node.js
chai
is available on npm. To install it, type:$ npm install --save-dev chai
Browsers
You can also use it within the browser; install via npm and use thechai.js
file found within the download. For example:<script src="./node_modules/chai/chai.js"></script>
Usage
Import the library in your code, and then pick one of the styles you'd like to use - eitherassert
, expect
or should
:import { assert } from 'chai'; // Using Assert style
import { expect } from 'chai'; // Using Expect style
import { should } from 'chai'; // Using Should style
Register the chai testing style globally
import 'chai/register-assert'; // Using Assert style
import 'chai/register-expect'; // Using Expect style
import 'chai/register-should'; // Using Should style
Import assertion styles as local variables
import { assert } from 'chai'; // Using Assert style
import { expect } from 'chai'; // Using Expect style
import { should } from 'chai'; // Using Should style
should(); // Modifies `Object.prototype`
import { expect, use } from 'chai'; // Creates local variables `expect` and `use`; useful for plugin use
Usage with Mocha
mocha spec.js -r chai/register-assert # Using Assert style
mocha spec.js -r chai/register-expect # Using Expect style
mocha spec.js -r chai/register-should # Using Should style
Read more about these styles in our docs.
Plugins
Chai offers a robust Plugin architecture for extending Chai's assertions and interfaces.- Need a plugin? View the official plugin list.
- Want to build a plugin? Read the plugin api documentation.
- Have a plugin and want it listed? Simply add the following keywords to your package.json:
chai-plugin
- browser
if your plugin works in the browser as well as Node.js
- browser-only
if your plugin does not work with Node.jsRelated Projects
- chaijs / chai-docs: The chaijs.com website source code.
- chaijs / assertion-error: Custom
Error
constructor thrown upon an assertion failing. - chaijs / deep-eql: Improved deep equality testing for Node.js and the browser.
- chaijs / check-error: Error comparison and information related utility for Node.js and the browser.
- chaijs / loupe: Inspect utility for Node.js and browsers.
- chaijs / pathval: Object value retrieval given a string path.
Contributing
Thank you very much for considering to contribute!Please make sure you follow our Code Of Conduct and we also strongly recommend reading our Contributing Guide.
Here are a few issues other contributors frequently ran into when opening pull requests:
- Please do not commit changes to the
chai.js
build. We do it once per release. - Before pushing your commits, please make sure you rebase them.