Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
E

expect

> 编程语言
Open source

Write better assertions

2.3K stars0 likes2 views
WebsiteGitHub

About

Write better assertions

expect Travis npm package

Notice

This package has been donated to Jest. This means that all future development of expect v21+ will take place at facebook/jest.

You can use jest-codemods to automatically migrate your old tests using [email protected] to the new jest version of expect (>= 21)

Versions prior to v21 will receive limited support and bugfixes, and any future < v21 releases will be published on an npm tag that is not "latest", to avoid causing problems for v21+ users.

[email protected] documentation

expect lets you write better assertions.

When you use expect, you write assertions similarly to how you would say them, e.g. "I expect this value to be equal to 3" or "I expect this array to contain 3". When you write assertions in this way, you don't need to remember the order of actual and expected arguments to functions like assert.equal, which helps you write better tests.

You can think of expect as a more compact alternative to Chai or Sinon.JS, just without the pretty website. ;)

Installation

Using npm:

$ npm install --save expect

Then, use as you would anything else:

javascript
// using ES6 modules
import expect, { createSpy, spyOn, isSpy } from 'expect'

// using CommonJS modules
var expect = require('expect')
var createSpy = expect.createSpy
var spyOn = expect.spyOn
var isSpy = expect.isSpy

The UMD build is also available on unpkg:

xml
<script src="https://unpkg.com/expect@%3C21/umd/expect.min.js"></script>

You can find the library on window.expect.

Assertions

toExist

expect(object).toExist([message])

Asserts the given object is truthy.

javascript
expect('something truthy').toExist()

Aliases:

  • toBeTruthy

toNotExist

expect(object).toNotExist([message])

Asserts the given object is falsy.

javascript
expect(null).toNotExist()

Aliases:

  • toBeFalsy

toBe

expect(object).toBe(value, [message])

Asserts that object is strictly equal to value using ===.

toNotBe

expect(object).toNotBe(value, [message])

Asserts that object is not strictly equal to value using ===.

toEqual

expect(object).toEqual(value, [message])

Asserts that the given object equals value using is-equal.

toNotEqual

expect(object).toNotEqual(value, [message])

Asserts that the given object is not equal to value using is-equal.

toThrow

expect(block).toThrow([error], [message])

Asserts that the given block throws an error. The error argument may be a constructor (to test using instanceof), or a string/RegExp to test against error.message.

javascript
expect(function () {
  throw new Error('boom!')
}).toThrow(/boom/)

toNotThrow

expect(block).toNotThrow([message])

Asserts that the given block does not throw.

toBeA(constructor)

expect(object).toBeA(constructor, [message])
expect(object).toBeAn(constructor, [message])

Asserts the given object is an instanceof constructor.

javascript
expect(new User).toBeA(User)
expect(new Asset).toBeAn(Asset)

Aliases:

  • toBeAn

toBeA(string)

expect(object).toBeA(string, [message])
expect(object).toBeAn(string, [message])

Asserts the typeof the given object is string.

javascript
expect(2).toBeA('number')

Aliases:

  • toBeAn

toNotBeA(constructor)

expect(object).toNotBeA(constructor, [message])
expect(object).toNotBeAn(constructor, [message])

Asserts the given object is not an instanceof constructor.

javascript
expect(new Asset).toNotBeA(User)
expect(new User).toNotBeAn(Asset)

Aliases:

  • toNotBeAn

toNotBeA(string)

expect(object).toNotBeA(string, [message])
expect(object).toNotBeAn(string, [message])

Asserts the typeof the given object is not string.

javascript
expect('a string').toNotBeA('number')
expect(2).toNotBeAn('object')

Aliases:

  • toNotBeAn

toMatch

expect(string).toMatch(pattern, [message])
expect(object).toMatch(pattern, [message])

Asserts the given string or object matches a pattern. When using a string, pattern must be a RegExp. When using an object, pattern may be anything acceptable to tmatch.

javascript
expect('a string').toMatch(/string/)
expect({
  statusCode: 200,
  headers: {
    server: 'nginx/1.6.5'
  }
}).toMatch({
  headers: {
    server: /nginx/
  }
})

toNotMatch

expect(string).toNotMatch(pattern, [message])
expect(object).toNotMatch(pattern, [message])

Asserts the given string or object does not match a pattern. When using a string, pattern must be a RegExp. When using an object, pattern may be anything acceptable to tmatch.

javascript
expect('a string').toMatch(/string/)
expect({
  statusCode: 200,
  headers: {
    server: 'nginx/1.6.5'
  }
}).toNotMatch({
  headers: {
    server: /apache/
  }
})

toBeLessThan

expect(number).toBeLessThan(value, [message])
expect(number).toBeFewerThan(value, [message])

Asserts the given number is less than value.

javascript
expect(2).toBeLessThan(3)

Aliases:

  • toBeFewerThan

toBeLessThanOrEqualTo

expect(number).toBeLessThanOrEqualTo(value, [message])

Asserts the given number is less than or equal to value.

javascript
expect(2).toBeLessThanOrEqualTo(3)

toBeGreaterThan

expect(number).toBeGreaterThan(value, [message])
expect(number).toBeMoreThan(value, [message])

Asserts the given number is greater than value.

javascript
expect(3).toBeGreaterThan(2)

Aliases:

  • toBeMoreThan

toBeGreaterThanOrEqualTo

expect(number).toBeGreaterThanOrEqualTo(value, [message])

Asserts the given number is greater than or equal to value.

javascript
expect(3).toBeGreaterThanOrEqualTo(2)

toInclude

expect(array).toInclude(value, [comparator], [message])
expect(object).toInclude(value, [comparator], [message])
expect(string).toInclude(value, [message])

Asserts that a given value is included (or "contained") within another. The actual value may be an array, object, or a string. The comparator function, if given, should compare two objects and return false if they are not equal. The default is to use isEqual.

javascript
expect([ 1, 2, 3 ]).toInclude(3)
expect({ a: 1, b: 2 }).toInclude({ b: 2 })
expect({ a: 1, b: 2, c: { d: 3 } }).toInclude({ b: 2, c: { d: 3 } })
expect('hello world').toInclude('world')

Aliases:

  • toContain

toExclude

expect(array).toExclude(value, [comparator], [message])
expect(object).toExclude(value, [comparator], [message])
expect(string).toExclude(value, [message])

Asserts that a given value is not included (or "contained") within another. The actual value may be an array, object, or a string. The comparator function, if given, should compare two objects and return false if they are not equal. The default is to use isEqual.

javascript
expect([ 1, 2, 3 ]).toExclude(4)
expect({ a: 1, b: 2 }).toExclude({ c: 2 })
expect({ a: 1, b: 2 }).toExclude({ b: 3 })
expect({ a: 1, b: 2, c: { d: 3 } }).toExclude({ c: { d: 4 } })
expect('hello world').toExclude('goodbye')

Aliases:

  • toNotContain
  • toNotInclude

toIncludeKey(s)

expect(object).toIncludeKeys(keys, [comparator], [message])
expect(object).toIncludeKey(key, [comparator], [message])

Asserts that the given object (may be an array, or a function, or anything with keys) contains all of the provided keys. The optional parameter comparator is a function which if given an object and a string key, it should return a boolean detailing whether or not the key exists in the object. By default, a shallow check with Object.prototype.hasOwnProperty is performed.

javascript
expect({ a: 1 }).toIncludeKey('a')
expect({ a: 1, b: 2 }).toIncludeKeys([ 'a', 'b' ])

Aliases:

  • toContainKey(s)

toExcludeKey(s)

expect(object).toExcludeKeys(keys, [comparator], [message])
expect(object).toExcludeKey(key, [comparator], [message])

Asserts that the given object (may be an array, or a function, or anything with keys) does not contain any of the provided keys. The optional parameter comparator is a function which if given an object and a string key, it should return a boolean detailing whether or not the key exists in the object. By default, a shallow check with Object.prototype.hasOwnProperty is performed.

javascript
expect({ a: 1 }).toExcludeKey('b')
expect({ a: 1, b: 2 }).toExcludeKeys([ 'c', 'd' ])

Aliases:

  • toNotContainKey(s)
  • toNotIncludeKey(s)

(spy) toHaveBeenCalled

expect(spy).toHaveBeenCalled([message])

Asserts the given spy function has been called at least once.

javascript
expect(spy).toHaveBeenCalled()

(spy) toNotHaveBeenCalled

expect(spy).toNotHaveBeenCalled([message])

Asserts the given spy function has not been called.

javascript
expect(spy).toNotHaveBeenCalled()

(spy) toHaveBeenCalledWith

expect(spy).toHaveBeenCalledWith(...args)

Asserts the given spy function has been called with the expected arguments.

javascript
expect(spy).toHaveBeenCalledWith('foo', 'bar')

Chaining Assertions

Every assertion returns an Expectation object, so you can chain assertions together.

javascript
expect(3.14)
  .toExist()
  .toBeLessThan(4)
  .toBeGreaterThan(3)

Spies

expect also includes the ability to create spy functions that can track the calls that are made to other functions and make various assertions based on the arguments and context that were used.

javascript
var video = {
  play: function () {},
  pause: function () {},
  rewind: function () {}
}

var spy = expect.spyOn(video, 'play')

video.play('some', 'args')

expect(spy.calls.length).toEqual(1)
expect(spy.calls[0].context).toBe(video)
expect(spy.calls[0].arguments).toEqual([ 'some', 'args' ])
expect(spy).toHaveBeenCalled()
expect(spy).toHaveBeenCalledWith('some', 'args')

spy.restore()
expect.restoreSpies()

createSpy

expect.createSpy([fn], [restore])

Creates a spy function with an (optional) implementation and (optional) restore logic. (In order for your provided implementation to be used, you must call andCallThrough.) For this reason, it's better to use andCall if you don't need custom restore logic.

javascript
var spy = expect.createSpy()

spyOn

expect.spyOn(target, method)

Replaces the method in target with a spy.

javascript
var video = {
  play: function () {}
}

var spy = expect.spyOn(video, 'play')
video.play()

spy.restore()

restoreSpies

expect.restoreSpies()

Restores all spies created with expect.spyOn(). This is the same as calling spy.restore() on all spies created.

javascript
// mocha.js example
beforeEach(function () {
  expect.spyOn(profile, 'load')
})

afterEach(function () {
  expect.restoreSpies()
})

it('works', function () {
  profile.load()
  expect(profile.load).toHaveBeenCalled()
})

Spy methods and properties

andCall

spy.andCall(fn)

Makes the spy invoke a function fn when called.

javascript
var dice = crea

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

JavaScript

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言