2016-10-16 11:16:55 +00:00
< h1 align = center >
< a href = "http://chaijs.com" title = "Chai Documentation" >
2016-12-18 16:29:32 +00:00
< img alt = "ChaiJS" src = "http://chaijs.com/img/chai-logo.png" >
2016-10-16 11:16:55 +00:00
< / a >
2016-12-18 16:29:32 +00:00
< br >
chai
2016-10-16 11:16:55 +00:00
< / h1 >
< p align = center >
Chai is a BDD / TDD assertion library for < a href = "http://nodejs.org" > node< / a > and the browser that can be delightfully paired with any javascript testing framework.
< / p >
< p align = center >
< a href = "./LICENSE" >
< img
alt="license:mit"
src="https://img.shields.io/badge/license-mit-green.svg?style=flat-square"
/>
< / a >
< a href = "https://github.com/chaijs/chai/releases" >
< img
alt="tag:?"
src="https://img.shields.io/github/tag/chaijs/chai.svg?style=flat-square"
/>
< / a >
2018-04-03 09:48:39 +00:00
< a href = "https://www.npmjs.com/package/chai" >
2016-10-16 11:16:55 +00:00
< img
alt="node:?"
2020-02-06 10:25:19 +00:00
src="https://img.shields.io/badge/node-%3E=8.0-blue.svg?style=flat-square"
2016-10-16 11:16:55 +00:00
/>
< / a >
< br / >
< a href = "https://saucelabs.com/u/chaijs" >
< img
alt="Selenium Test Status"
src="https://saucelabs.com/browser-matrix/chaijs.svg"
/>
< / a >
< br / >
< a href = "https://www.npmjs.com/packages/chai" >
< img
alt="downloads:?"
src="https://img.shields.io/npm/dm/chai.svg?style=flat-square"
/>
< / a >
< a href = "https://travis-ci.org/chaijs/chai" >
< img
alt="build:?"
src="https://img.shields.io/travis/chaijs/chai/master.svg?style=flat-square"
/>
< / a >
2017-10-29 13:04:17 +00:00
< a href = "https://codecov.io/gh/chaijs/chai" >
2016-10-16 11:16:55 +00:00
< img
alt="coverage:?"
2017-10-29 13:04:17 +00:00
src="https://img.shields.io/codecov/c/github/chaijs/chai.svg?style=flat-square"
2016-10-16 11:16:55 +00:00
/>
< / a >
< a href = "" >
< img
alt="devDependencies:?"
src="https://img.shields.io/david/chaijs/chai.svg?style=flat-square"
/>
< / a >
< br / >
< a href = "https://chai-slack.herokuapp.com/" >
< img
alt="Join the Slack chat"
src="https://img.shields.io/badge/slack-join%20chat-E2206F.svg?style=flat-square"
/>
< / a >
< a href = "https://gitter.im/chaijs/chai" >
< img
alt="Join the Gitter chat"
src="https://img.shields.io/badge/gitter-join%20chat-D0104D.svg?style=flat-square"
/>
< / a >
< a href = "https://opencollective.com/chaijs" >
< img
alt="OpenCollective Backers"
src="https://opencollective.com/chaijs/backers/badge.svg?style=flat-square"
/>
< / a >
< / p >
2011-12-15 12:50:06 +00:00
2016-10-16 11:16:55 +00:00
For more information or to download plugins, view the [documentation ](http://chaijs.com ).
2015-03-15 22:03:18 +00:00
2016-10-16 11:16:55 +00:00
## What is Chai?
2015-03-15 22:03:18 +00:00
2018-02-28 17:18:32 +00:00
Chai is an _assertion library_ , similar to Node's built-in `assert` . It makes testing much easier by giving you lots of assertions you can run against your code.
2016-06-20 19:46:24 +00:00
2016-10-16 11:16:55 +00:00
## Installation
2015-03-15 22:03:18 +00:00
2016-10-16 11:16:55 +00:00
### Node.js
2011-12-16 11:15:30 +00:00
2016-10-16 11:16:55 +00:00
`chai` is available on [npm ](http://npmjs.org ). To install it, type:
2020-03-19 11:36:59 +00:00
$ npm install --save-dev chai
2016-10-16 11:16:55 +00:00
### Browsers
You can also use it within the browser; install via npm and use the `chai.js` file found within the download. For example:
```html
< 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 - either `assert` , `expect` or `should` :
```js
2016-11-18 17:42:05 +00:00
var chai = require('chai');
var assert = chai.assert; // Using Assert style
var expect = chai.expect; // Using Expect style
var should = chai.should(); // Using Should style
2016-10-16 11:16:55 +00:00
```
2012-05-09 18:45:45 +00:00
2016-11-18 17:42:05 +00:00
### Pre-Native Modules Usage (_registers the chai testing style globally_)
2016-11-17 11:30:34 +00:00
```js
2016-11-18 17:42:05 +00:00
require('chai/register-assert'); // Using Assert style
require('chai/register-expect'); // Using Expect style
require('chai/register-should'); // Using Should style
2016-11-17 11:30:34 +00:00
```
2016-11-18 17:42:05 +00:00
### Pre-Native Modules Usage (_as local variables_)
```js
const { assert } = require('chai'); // Using Assert style
const { expect } = require('chai'); // Using Expect style
const { should } = require('chai'); // Using Should style
should(); // Modifies `Object.prototype`
const { expect, use } = require('chai'); // Creates local variables `expect` and `use` ; useful for plugin use
```
### Native Modules Usage (_registers the chai testing style globally_)
```js
import 'chai/register-assert'; // Using Assert style
import 'chai/register-expect'; // Using Expect style
import 'chai/register-should'; // Using Should style
```
### Native Modules Usage (_local import only_)
```js
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`
```
### Usage with Mocha
2016-11-17 11:30:34 +00:00
```bash
2016-11-18 17:42:05 +00:00
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
2016-11-17 11:30:34 +00:00
```
2016-10-16 11:16:55 +00:00
[Read more about these styles in our docs ](http://chaijs.com/guide/styles/ ).
## Plugins
2014-03-19 16:22:08 +00:00
Chai offers a robust Plugin architecture for extending Chai's assertions and interfaces.
- Need a plugin? View the [official plugin list ](http://chaijs.com/plugins ).
- Want to build a plugin? Read the [plugin api documentation ](http://chaijs.com/guide/plugins/ ).
2016-04-01 09:36:07 +00:00
- 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.js
2014-03-19 16:22:08 +00:00
2013-06-17 20:06:38 +00:00
### Related Projects
2016-06-23 22:39:01 +00:00
- [chaijs / chai-docs ](https://github.com/chaijs/chai-docs ): The chaijs.com website source code.
2013-09-18 19:04:00 +00:00
- [chaijs / assertion-error ](https://github.com/chaijs/assertion-error ): Custom `Error` constructor thrown upon an assertion failing.
2014-01-26 06:35:09 +00:00
- [chaijs / deep-eql ](https://github.com/chaijs/deep-eql ): Improved deep equality testing for Node.js and the browser.
2016-06-23 22:39:01 +00:00
- [chaijs / type-detect ](https://github.com/chaijs/type-detect ): Improved typeof detection for Node.js and the browser.
- [chaijs / check-error ](https://github.com/chaijs/check-error ): Error comparison and information related utility for Node.js and the browser.
- [chaijs / loupe ](https://github.com/chaijs/loupe ): Inspect utility for Node.js and browsers.
- [chaijs / pathval ](https://github.com/chaijs/pathval ): Object value retrieval given a string path.
2016-10-16 01:39:20 +00:00
- [chaijs / get-func-name ](https://github.com/chaijs/get-func-name ): Utility for getting a function's name for node and the browser.
2013-06-17 20:06:38 +00:00
2015-07-17 15:40:14 +00:00
### Contributing
Thank you very much for considering to contribute!
2016-10-16 11:16:55 +00:00
Please make sure you follow our [Code Of Conduct ](https://github.com/chaijs/chai/blob/master/CODE_OF_CONDUCT.md ) and we also strongly recommend reading our [Contributing Guide ](https://github.com/chaijs/chai/blob/master/CONTRIBUTING.md ).
2015-07-17 15:40:14 +00:00
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 ](https://github.com/chaijs/chai/blob/master/CONTRIBUTING.md#pull-requests ) them.
2012-05-09 18:45:45 +00:00
### Contributors
2012-02-13 19:03:34 +00:00
2015-06-03 22:36:25 +00:00
Please see the full
[Contributors Graph ](https://github.com/chaijs/chai/graphs/contributors ) for our
list of contributors.
### Core Contributors
2015-10-10 00:43:25 +00:00
Feel free to reach out to any of the core contributors with your questions or
2015-06-03 22:36:25 +00:00
concerns. We will do our best to respond in a timely manner.
[![Jake Luer ](https://avatars3.githubusercontent.com/u/58988?v=3&s=50 )](https://github.com/logicalparadox)
[![Veselin Todorov ](https://avatars3.githubusercontent.com/u/330048?v=3&s=50 )](https://github.com/vesln)
[![Keith Cirkel ](https://avatars3.githubusercontent.com/u/118266?v=3&s=50 )](https://github.com/keithamus)
2016-03-11 22:57:39 +00:00
[![Lucas Fernandes da Costa ](https://avatars3.githubusercontent.com/u/6868147?v=3&s=50 )](https://github.com/lucasfcosta)
2016-06-14 13:49:45 +00:00
[![Grant Snodgrass ](https://avatars3.githubusercontent.com/u/17260989?v=3&s=50 )](https://github.com/meeber)