Socket
Socket
Sign inDemoInstall

expect

Package Overview
Dependencies
25
Maintainers
1
Versions
236
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    expect

Write better assertions


Version published
Maintainers
1
Install size
121 kB
Created

Package description

What is expect?

The 'expect' npm package is a library for writing test assertions. It is commonly used in conjunction with testing frameworks like Jest or Mocha to validate the behavior of JavaScript code. It provides a range of assertion types and matchers that allow developers to write expressive and readable tests.

What are expect's main functionalities?

Basic Assertions

This feature allows you to assert that a value matches exactly what you expect. The 'toBe' matcher compares with ===.

expect(2 + 2).toBe(4);

Object Property Assertions

With this feature, you can assert that an object has a specific property with a certain value. The 'toHaveProperty' matcher checks for the existence and value of a property in an object.

expect({ name: 'Alice', age: 30 }).toHaveProperty('name', 'Alice');

Exception Testing

This feature is used to test if a function throws an exception when it is executed. The 'toThrow' matcher is used to assert that an error is thrown with a specific message.

expect(() => { throw new Error('failure'); }).toThrow('failure');

Array Containment

This feature allows you to assert that an array contains a specific item. The 'toContain' matcher checks if an array includes the expected item.

expect(['Alice', 'Bob', 'Eve']).toContain('Bob');

Asynchronous Assertions

This feature enables you to write assertions for asynchronous code. The 'resolves' matcher waits for a promise to resolve and then checks the resolved value.

expect(Promise.resolve('success')).resolves.toBe('success');

Other packages similar to expect

Readme

Source

build status npm package

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.

Installation

Using npm:

$ npm install expect

Then with a module bundler like webpack, use as you would anything else:

// using an ES6 transpiler, like babel
import expect, { createSpy, spyOn, isSpy } from 'expect'

// not using an ES6 transpiler
var expect = require('expect')
var createSpy = expect.createSpy
var spyOn = expect.spyOn
var isSpy = expect.isSpy

There is a UMD build in the npm package in the umd directory. Use it like:

var expect = require('expect/umd/expect.min')

Assertions

expect(object).toExist([message])

Asserts the given object is truthy.

expect('something truthy').toExist()
expect(object).toNotExist([message])

Asserts the given object is falsy.

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

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

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

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

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

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

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

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

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.

expect(function () {
  throw new Error('boom!')
}).toThrow(/boom/)
expect(block).withArgs(...args).toThrow([error], [message])

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

expect(function (check) {
  if (check === 'bad')
    throw new Error('boom!')
}).withArgs('bad').toThrow(/boom/)
expect(block).withContext(context).toThrow([error], [message])

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

expect(function () {
  if (this.check === 'bad')
    throw new Error('boom!')
}).withContext({ check: 'bad' }).toThrow(/boom/)
expect(block).toNotThrow([message])

Asserts that the given block does not throw.

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

Asserts the given object is an instanceof constructor.

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

Asserts the typeof the given object is string.

expect(2).toBeA('number')
expect(object).toNotBeA(constructor, [message])
expect(object).toNotBeAn(constructor, [message])

Asserts the given object is not an instanceof constructor.

expect(new User).toBeA(User)
expect(new Asset).toBeAn(Asset)
expect(object).toNotBeA(string, [message])

Asserts the typeof the given object is not string.

expect(2).toBeA('number')
expect(string).toMatch(pattern, [message])

Asserts the given string matches pattern, which must be a RegExp.

expect('a string').toMatch(/string/)
expect(number).toBeLessThan(value, [message])
expect(number).toBeFewerThan(value, [message])

Asserts the given number is less than value.

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

Asserts the given number is greater than value.

expect(3).toBeGreaterThan(2)
expect(array).toInclude(value, [comparator], [message])
expect(array).toContain(value, [comparator], [message])

Asserts the given array contains value. The comparator function, if given, should compare two objects and either return false or throw if they are not equal. It defaults to assert.deepEqual.

expect([ 1, 2, 3 ]).toInclude(3)
expect(array).toExclude(value, [comparator], [message])
expect(array).toNotContain(value, [comparator], [message])

Asserts the given array does not contain value. The comparator function, if given, should compare two objects and either return false or throw if they are not equal. It defaults to assert.deepEqual.

expect([ 1, 2, 3 ]).toExclude(4)
expect(string).toInclude(value, [message])
expect(string).toContain(value, [message])

Asserts the given string contains value.

expect('hello world').toInclude('world')
expect('hello world').toContain('world')
expect(string).toExclude(value, [message])
expect(string).toNotContain(value, [message])

Asserts the given string does not contain value.

expect('hello world').toExclude('goodbye')
expect('hello world').toNotContain('goodbye')

Chaining Assertions

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

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.

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')

Issues

Please file issues on the issue tracker on GitHub.

Tests

To run the tests in node:

$ npm install
$ npm test

To run the tests in Chrome:

$ npm install
$ npm run test-browser

License

MIT

Keywords

FAQs

Last updated on 26 Sep 2015

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc