UNPKG

nisemono

Version:

Pretty simple test double library

74 lines (63 loc) 2.67 kB
var assert = require('assert'); var TestHelper = require('./test-helper'); var nisemono = require('../'); describe('nisemono', function() { describe('.obj', function() { var obj; beforeEach(function() { obj = { method1: function() { return 1; }, method2: function() { return 2; }, property: 'property' }; obj.__proto__ = { method3: function() { return 3; }, protoProperty: 'protoProperty' }; }); it('should return a fake object that has fake methods', function() { var fake = nisemono.obj(obj); assert.equal(fake.property , 'property'); assert.equal(fake.protoProperty, 'protoProperty'); assert.ok(TestHelper.isFunc(obj.method1)); assert.ok(TestHelper.isFunc(obj.method2)); assert.ok(TestHelper.isFunc(obj.method3)); assert.ok(TestHelper.isFakeFunc(fake.method1)); assert.ok(TestHelper.isFakeFunc(fake.method2)); assert.ok(TestHelper.isFakeFunc(fake.method3)); }); context('except', function() { it('should return a fake object that has fake methods except of specified methods', function() { var fake = nisemono.obj(obj, { except: ['method1'] }); assert.ok(TestHelper.isFunc(obj.method1)); assert.ok(TestHelper.isFunc(obj.method2)); assert.ok(TestHelper.isFunc(obj.method3)); assert.ok(!TestHelper.isFakeFunc(fake.method1)); assert.ok(TestHelper.isFakeFunc(fake.method2)); assert.ok(TestHelper.isFakeFunc(fake.method3)); }); }); context('only', function() { it('should return a fake object that has only specified fake methods', function() { var fake = nisemono.obj(obj, { only: ['method1'] }); assert.ok(TestHelper.isFunc(obj.method1)); assert.ok(TestHelper.isFunc(obj.method2)); assert.ok(TestHelper.isFunc(obj.method3)); assert.ok(TestHelper.isFakeFunc(fake.method1)); assert.ok(!TestHelper.isFakeFunc(fake.method2)); assert.ok(!TestHelper.isFakeFunc(fake.method3)); }); }); context('except&only', function() { it('should return a fake object that has specified fake methods', function() { var fake = nisemono.obj(obj, { only: ['method1', 'method2'], except: ['method1'] }); assert.ok(TestHelper.isFunc(obj.method1)); assert.ok(TestHelper.isFunc(obj.method2)); assert.ok(TestHelper.isFunc(obj.method3)); assert.ok(!TestHelper.isFakeFunc(fake.method1)); assert.ok(TestHelper.isFakeFunc(fake.method2)); assert.ok(!TestHelper.isFakeFunc(fake.method3)); }); }); }); });