Have ideas to improve npm?Join in the discussion! »

    chai-nock
    TypeScript icon, indicating that this package has built-in type declarations

    1.3.0 • Public • Published

    Chai Assertions for Nock

    Build Status Coverage Status npm version

    Nock Chai extends Chai with a language for asserting facts about Nock.

    Instead of manually wiring up your expectations to intercepting a nocked request:

    const nockedRequest = nock('http://some-url');
     
    nockedRequest.on('request', function(req, interceptor, body) {
      expect(body).to.deep.equal({ hello: 'world' });
    });

    you can write code that expresses what you really mean:

    return expect(nock('http://some-url')).to.have.been.requestedWith({
      hello: 'world'
    });

    Installation

    npm install chai-nock

    Then add to your test setup:

    const chai = require('chai');
    const chaiNock = require('chai-nock');
     
    chai.use(chaiNock);

    Assertions

    requested

    Asserts that a request has been made to the nock.

    it('requested', () => {
      const requestNock = nock('http://bbc.co.uk')
        .get('/')
        .reply(200);
     
      request({
        uri: 'http://bbc.co.uk',
      });
     
      return expect(requestNock).to.have.been.requested;
    });

    requestedWith(body)

    Asserts that a request has been made to the nock with a body that exactly matches the object provided.

    it('requestedWith', () => {
      const requestNock = nock('http://bbc.co.uk')
        .get('/')
        .reply(200);
     
      request({
        json: true,
        uri: 'http://bbc.co.uk',
        body: {
          hello: 'world'
        }
      });
     
      return expect(requestNock).to.have.been.requestedWith({ hello: 'world' });
    });

    requestedWithHeaders(headers)

    Asserts that a request has been made to the nock with headers that exactly match the object provided.

    it('requestedWithHeaders', () => {
      const requestNock = nock('http://bbc.co.uk')
        .get('/')
        .reply(200);
     
      request({
        json: true,
        uri: 'http://bbc.co.uk',
        headers: {
          myHeader: 'myHeaderValue'
        }
      });
     
      return expect(requestNock).to.have.been.requestedWithHeaders({
        host: 'bbc.co.uk',
        accept: 'application/json',
        myHeader: 'myHeaderValue'
      });
    });

    requestedWithHeadersMatch(partialHeaders)

    Asserts that a request has been made to the nock with headers that contain the key/value pairs in the object provided.

    it('requestedWithHeadersMatch', () => {
      const requestNock = nock('http://bbc.co.uk')
        .get('/')
        .reply(200);
     
      request({
        json: true,
        uri: 'http://bbc.co.uk',
        headers: {
          myHeader: 'myHeaderValue',
          otherHeader: 'otherHeaderValue'
        }
      });
     
      return expect(requestNock).to.have.been.requestedWithHeadersMatch({
        myHeader: 'myHeaderValue'
      });
    });

    Setting a Timeout

    • By default, a timeout of 2 seconds is applied to assertions on nock requests. This means that if nock has not intercepted the request within the set time, the assertion will be false
    • You can set a custom global timeout by calling setTimeout on the chaiNock object:
    const chaiNock = require('chai-nock');
     
    chai.use(chaiNock);
    // Set a timeout of 10 seconds
    chaiNock.setTimeout(10000);
    • WARNING: If not set already, the test timeout must be greater than that of chaiNock!
    jest.setTimeout(12000);

    Usage

    const { expect } = require('chai');
    const nock = require('nock');
    const request = require('request-promise-native');
     
    describe('example', () => {
      it('test', () => {
        const requestNock = nock('http://bbc.co.uk')
        .get('/')
        .reply(200);
     
        request({
          json: true,
          uri: 'http://bbc.co.uk',
          body: {
            hello: 'world'
          }
        });
     
        return expect(requestNock).to.have.been.requestedWith({ hello: 'world' });
      });
    });

    Install

    npm i chai-nock

    DownloadsWeekly Downloads

    4,123

    Version

    1.3.0

    License

    MIT

    Unpacked Size

    30.9 kB

    Total Files

    12

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar
    • avatar