minifake

0.2.5 • Public • Published

MiniFake

Simple fakes with contract tests inspired by RSpec, Bogus and works by JB Rainsberger.

Synopsis

Currently works with expect.js.

Features

  • Single interface for mocking and stubing (through fake('name'))
  • Automatic mock verification (when using mocha/jasmine or any framework that supports global afterEach)
  • mock/stub properties
  • [TODO] Built in contract test discovery

Usage

A note on using with Mocha (and probably other testing frameworks)

This may be obvious to those that have used JS testing frameworks for a while.

Don't assign variables in describe functions. Only declare them in the describe and assign them in a beforeEach. Fakes will misbehave (due to being verified in a beforeEach) if assigned like this. It's probably advisable to use beforeEach to assign any variable not just fakes.

var fake = require('minifake').fake,
    expect = require('minifake').expect;
...

// Optional options hash can be passed in.
// Currently supports fakes with ordered calls
var thing = fake('Thing', {ordered: true});

mocks

expect(thing).to.receive('method', param1, param2, ...).and_return('something');
expect(thing).to.get('property').and_return('something');
expect(thing).to.set('property', param1);

stubs

allow(thing).to.receive('another_method').and_return('something');
expect(thing.another_method()).to.equal('something');
allow(thing).to.get('property').and_return('something');
allow(thing).to.set('property', param1);

number of times a fake is called

expect(thing).to.receive('method').once().and_return(1);

return something different on each call

expect(thing).to.receive('method').twice().and_return(1, 2);

Second receive overrides first

expect(thing).to.receive('method').and_return(1);
expect(thing).to.receive('method').and_return(2);

thing.method(); // => 2

Supports different parameters

expect(thing).to.receive('method', 1, 2);
expect(thing).to.receive('method', 2, 2);

TODO

  • Identify missing contract tests (i.e. mocks used without corresponding test)
  • Accept anyArgs() in parameter list for a method/property

Development

Runs jshint and tests:

grunt watch

Readme

Keywords

none

Package Sidebar

Install

npm i minifake

Weekly Downloads

0

Version

0.2.5

License

BSD-2-Clause

Last publish

Collaborators

  • philt