Skip to content
Test one thing at a time, fake the rest.
JavaScript
Latest commit 8fd8322 May 20, 2013 @alexindigo alexindigo Merge pull request #10 from alexindigo/master
Pointed badge back to mothership.
Failed to load latest commit information.
lib
test Made it play nice with 0.11.x May 14, 2013
.gitignore
.npmignore Preparing for npm publish. May 15, 2013
.travis.yml
Makefile
Readme.md Pointed badge back to mothership. May 20, 2013
index.js
package.json

Readme.md

Current Status: This library is ready for experimental usage.

Fake Build Status

Test one thing at a time, fake the rest.

Tutorial

Set an expectation of a method call on an object:

var fake = require('fake')();
var object = {};

fake.expect(object, 'method');

object.method();

If the last object.method() call is not present, an exception will be thrown.

Depending on your approach to TDD, you may prefer to use stubbing over mocking instead:

var fake = require('fake')();
var object = {};

var objectMethodCall = fake.stub(object, 'method');

object.method();

assert.equals(objectMethodCall.calls.length, 1);

API

fake.expect(object, method, [times, withArgs, andReturn | andHandle])

Set up an ordered expectation. Calling any other methods controlled by fake before this expectation has been satisifed will throw an exception.

fake.expectAnytime(object, method, [times, withArgs, andReturn | andHandle])

Set up an unordered expectation. This will only throw an error if this expectation is not verified before the process exits.

fake.stub(object, method, [times, withArgs, andReturn | andHandle])

Set up an optional expectation. This is useful for pre-filling return values for functions, without caring if the function is ever called.

Todo

  • Report non-matching anytime expectations if they are the closest match
  • Move stacktrace into own module
  • Useful error reporting
  • Partial arguments matching
  • Become self-testing
  • Documentation
  • Handle fake functions being claimed by multiple fakes
  • NodeModuleScene / BrowserScriptScene?
Something went wrong with that request. Please try again.