• Stars
    star
    8,128
  • Rank 4,566 (Top 0.09 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created about 13 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.

ChaiJS
chai

Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.

license:mit tag:? node:?
Selenium Test Status
downloads:? build:? coverage:? devDependencies:?
Join the Slack chat Join the Gitter chat OpenCollective Backers

For more information or to download plugins, view the documentation.

What is Chai?

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.

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 the chai.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 - either assert, expect or should:

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

Pre-Native Modules Usage (registers the chai testing style globally)

require('chai/register-assert');  // Using Assert style
require('chai/register-expect');  // Using Expect style
require('chai/register-should');  // Using Should style

Pre-Native Modules Usage (as local variables)

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)

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)

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

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.js

Related Projects

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.

Contributors

Please see the full Contributors Graph for our list of contributors.

Core Contributors

Feel free to reach out to any of the core contributors with your questions or concerns. We will do our best to respond in a timely manner.

Jake Luer Veselin Todorov Keith Cirkel Lucas Fernandes da Costa Grant Snodgrass

More Repositories

1

chai-as-promised

Extends Chai with assertions about promises.
JavaScript
1,421
star
2

sinon-chai

Extends Chai with assertions for the Sinon.JS mocking framework.
JavaScript
1,089
star
3

chai-http

HTTP Response assertions for the Chai Assertion Library.
JavaScript
634
star
4

chai-jquery

jQuery assertions for chai
JavaScript
372
star
5

chai-spies

Spies for Chai Assertion Library.
JavaScript
132
star
6

type-detect

Improved typeof detection for node.js and the browser.
JavaScript
130
star
7

deep-eql

Improved deep equality testing for Node.js and the browser.
JavaScript
108
star
8

chai-things

Chai support for assertions on array elements
CoffeeScript
104
star
9

chai-json-schema

Chai plugin for JSON Schema v4
JavaScript
75
star
10

chaijs.github.io

The chaijs.com website source code. Contributions welcome.
JavaScript
49
star
11

pathval

Object value retrieval given a string path
JavaScript
42
star
12

chai-fs

Chai assertions for Node.js filesystem
JavaScript
33
star
13

assertion-error

Error constructor for test and validation frameworks that implements standardized AssertionError specification.
TypeScript
25
star
14

chai-factories

Factories over fixtures. Chai Assertion Library.
JavaScript
23
star
15

loupe

Inspect utility for Node.js and browsers
JavaScript
21
star
16

chai-stats

Statistical and additional numerical assertions for the Chai Assertion Library.
JavaScript
16
star
17

check-error

Error comparison and information related utility for node and the browser
JavaScript
14
star
18

chai-change

Assert that a change you expected to happen, happened, with this chai plugin
JavaScript
14
star
19

get-func-name

Reliably get the name of a Function in a cross-browser compatible way.
JavaScript
12
star
20

simple-assert

Vanilla Assertions
JavaScript
7
star
21

chai-null

Null Object Pattern implementation for the Chai Assertion Library
JavaScript
5
star
22

chai-timers

Timers, stopwatches, and other time based assertions for the Chai Assertion Library.
JavaScript
5
star
23

guidelines

Guidelines for the Chaijs Organisation
1
star
24

plugin-use

A simple Event Emitter, tuned to be used as a plugin driver.
TypeScript
1
star