schmock

A mock object library for Node.js

schmock

A mock object library for Node.js

var schmock = require('schmock');
 
// newly created mocks will throw errors when method parameters do not match 
schmock.loud();
 
// newly created mocks will log errors and return null from methods when method parameters do not match 
// Default 
schmock.quiet();
 
// create a mock 
var foo = schmock.mock();
// create a mock with an optional name parameter for identification in console log messages (quiet mode) 
foo = schmock.mock('foo');
 
// this mock will throw errors when method parameters do not match 
foo = foo.loud();
 
// this mock will log errors and return null from methods when method parameters do not match 
foo = foo.quiet();
 
// mock the method 'bar' 
var bar = foo.when('bar');
 
// expect the params (1,'param2') to be passed to 'bar' when called 
bar = bar.with(1,'param2');
 
// return 'response' when 'bar' is called 
bar.return('response');
 
// return the result of function when 'bar' is called 
bar.return(function() {
    return 'response'; 
});
 
// throw an Error when 'bar' is called 
bar.throw(new Error('oops!'));
// complete (quiet) mocking with params and return 
var foo = schmock.mock('foo').quiet();
foo.when('bar').with(1,'2').return('response');
 
assert.equal('response',foo.bar(1,'2'));            // PASS 
assert.equal('response',foo.bar(1));                // FAIL 
assert.equal(null,foo.bar(1));                      // PASS 
assert.equal('response',foo.bar(1,'3'));            // FAIL 
assert.equal('response',foo.bar(1,'2','3'));        // FAIL 
assert.equal('response',foo.bar(1,undefined));      // FAIL 
assert.equal('response',foo.bar(1,null));           // FAIL 
 
// complete (loud) mocking with params and return 
foo = schmock.mock('foo').quiet();
foo.when('bar').with(1).return('response');
 
foo.bar(1);     // OK 
foo.bar(2);     // Error: expected argument:'1' did not match actual:'2' for argument 1 
foo.bar();      // Error: expected number of arguments:1 did not match actual:0 
foo.bar(1,2);   // Error: expected number of arguments:1 did not match actual:2 
 
// complete mocking with throw 
foo = schmock.mock('foo');
foo.when('bar').with(1234).throw(new Error('Ham Sandwiches!'));
try {
    foo.bar(1234);
    assert.ok(false,"should have thrown");
} catch (err) {
    assert.equal('Error: Ham Sandwiches!', err.toString());     // PASS 
}
 
// mocking without params and with a return 
foo = schmock.mock('foo');
foo.when('bar').return(1234);
assert.equal(1234, foo.bar());      // PASS 
 
// mocking without params, return and throw 
foo = schmock.mock('foo');
foo.when('bar');
assert.equal(null, foo.bar());      // PASS