Extends Chai with assertions for the Nock Http mocking framework
npm install chai-nock  
Nock Chai extends Chai with a language for asserting facts about Nock.
Instead of manually wiring up your expectations to intercepting a nocked request:
``javascript
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:
`javascript`
return expect(nock('http://some-url')).to.have.been.requestedWith({
hello: 'world'
});
npm install chai-nock
Then add to your test setup:
`javascript
const chai = require('chai');
const chaiNock = require('chai-nock');
chai.use(chaiNock);
`
Asserts that a request has been made to the nock.
`javascript
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;
});
`
Asserts that a request has been made to the nock with a body that exactly matches the object provided.
`javascript
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' });
});
`
Asserts that a request has been made to the nock with headers that exactly match the object provided.
`javascript
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'
});
});
`
Asserts that a request has been made to the nock with headers that contain the key/value pairs in the object provided.
`javascript
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'
});
});
`
on the chaiNock object:
`javascript
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!
`javascript
jest.setTimeout(12000);
`
Usage
`javascript
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' });
});
});
``