2.1.1 • Published 8 years ago

stub-promise-function v2.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

stub-promise-function

A test utility for stubbing functions that return promises. The promises' control flow can be controlled on the outside of the code under test, in in your test suite, by calling the exposed resolve() and reject() functions.

npm package

npm install stub-promise-function --save-dev

Example

var stubPromiseFunction = require('stub-promise-function');
// code under test
function getUsers() {
  http.get('/users.html').then(function(response) {
      someFunction(response);
    });
};

// test code
describe('#getUsers()', function() {

  beforeEach(function() {
    someFunction = sinon.spy();
    http.get = stubPromiseFunction();
  });

  beforeEach(function() {
    getUsers();
  });

  it('uses http to get users', () => {
    expect(http.get.called).toBe(true);
    expect(http.get.getCall(0).args[0]).toBe('/users.html');
  });

  describe('when http.get resolves', function() {

    var response;

    beforeEach(function() {
      response = {
        data: 'foo'
      }
      http.get.resolve(response);
    });

    describe('when resolved', function() {

      it('invokes someFunction', function() {
        expect(someFunction.called).toBe(true);
        expect(someFunction.getCall(0).args[0]).toBe(response);
      });

    });

  });

});

describe('multiple calls', function() {

  beforeEach(function() {
    someFunction = sinon.spy();
    http.get = stubPromiseFunction();
  });

  beforeEach(function() {
    getUsers();
    getUsers();
  });

  describe('resolving multiple calls', function() {

    var response1;
    var response2;

    beforeEach(function() {
      response1 = {
        data: 'Jon'
      };
      http.get.resolve(response1)

      response2 = {
        data: 'Ana'
      };
      http.get.resolve(response2)
    });

    describe('when resolved', function() {

      it('it has resolved both http get calls', function() {
        expect(someFunction.callCount).toBe(2);
        expect(someFunction.getCall(0).args[0]).toBe(response1);
        expect(someFunction.getCall(1).args[0]).toBe(response2);
      });

    });

  });

});
2.1.1

8 years ago

2.1.0

8 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago