This package has been deprecated

Author message:

No longer maintained.

sinon-doublist

0.5.1 • Public • Published

sinon-doublist

Sinon.JS test double mixins: spyMany, stubMany, stubWithReturn, stubBind

  • Double multiple methods in one call.
  • Use sinon.testCase-like auto-sandboxing.
  • Optionally use plain objects, even empty ones, to hold method doubles.
  • Select target methods x.y.z property path strings.

Build Status

Examples

Mixin (recommended)

sinonDoublist(sinon, 'mocha');
 
describe('myFunction', function() {
  it('should do something', function() {
    // this.spyMany()
    // this.stubMany()
    // this.stubWithReturn()
  });
});

Mixin (manual)

describe('myFunction', function() {
  beforeEach(function() {
    sinonDoublist(sinon, this);
  });
 
  afterEach(function() {
    this.sandbox.restore();
  });
 
  it('should do something', function() {
    // this.spyMany()
    // this.stubMany()
    // this.stubWithReturn()
  });
});

spyMany()

Creates spies for multiple methods, even though the latter do not exist yet.

var spy = this.spyMany({}, ['a.b.methodA', 'c.e.methodB', 'd.e.methodC']);
spy['a.b.methodA'].restore();

stubMany()

Creates a stub for method foo() that returns false only if called with argument 'bar'.

var obj = {};
var foo = this.stubMany(obj, 'foo').foo;
foo.withArgs('bar').returns(false);
foo.restore();

stubWithReturn()

Creates a stub that, if called with argument 'foo', returns object containing a spy at path x.y.z.

var obj = {};
 
stub = this.stubWithReturn({
  obj: obj,
  args: ['foo']
  method: 'methodD',
  spies: 'x.y.z'
});
var spiesReturnedFromStub = obj.methodD();
spiesReturnedFromStub.x.y.z('foo');
spiesReturnedFromStub.x.y.z.called.should.equal(true);

stubBind()

function target() {}
function fakeBoundTarget() {}
 
var stub = this.stubBind(target, null, 1, 2, 3).bind;
stub.bind.returns(fakeBoundTarget);
 
target.bind(null, 3, 2, 1); // undefined
console.log(stub.bind.called); // false
 
target.bind(null, 1, 2, 3); // fakeBoundTarget
console.log(stub.bind.called); // true

Gotchas

useFakeTimers and setImmediate

As of 0.5.0, useFakeTimers is no longer enabled by default. sinon now fakes setImmediate in that feature, which may cause confusion if automatically enabled.

To enable:

this.clock = this.sandbox.useFakeTimers();

Installation

component

component install codeactual/sinon-doublist

NPM

npm install sinon-doublist

Related Projects

API

Documentation

License

MIT

Tests

Node

npm test

Browser via Karma

  • npm install karma
  • grunt build && karma start
  • Browse http://localhost:9876/karma/

jQuery 2.1.0

Custom build used in karma test:

git clone git://github.com/jquery/jquery.git
git checkout 2.1.0
npm install
grunt custom:-sizzle,-css,-effects,-offset,-dimensions,-deprecated,-ajax/script,-ajax/jsonp,-wrap,-event-alias,-exports/amd
cp ./dist/jquery.min.js /path/to/sinon-doublist/lib/jquery.js

Package Sidebar

Install

npm i sinon-doublist

Weekly Downloads

9

Version

0.5.1

License

MIT

Last publish

Collaborators

  • codeactual