[Unit Testing] Mock an HTTP request using Nock while unit testing

When testing functions that make HTTP requests, it's not preferable for those requests to actually run. Using the nock JavaScript library, we can mock out HTTP requests so that they don't actually happen, control the responses from those requests, and assert when requests are made.

const assert = require('assert');
const nock = require('nock');
require('isomorphic-fetch');

function getData() {
    return fetch('https://jsonplaceholder.typicode.com/users')
        .then(response => response.json());
}

describe('getData', () => {
    it('should fetch data', () => {
        const request = nock('https://jsonplaceholder.typicode.com')
            .get('/users')
            .reply(200, [{username: 'joe'}]);

        getData()
            .then(response => {
                assert.deepEqual(response, [{username: 'joe'}]);
                assert.ok(request.isDone());
            });
    });
})

猜你喜欢

转载自www.cnblogs.com/Answer1215/p/9820335.html