proxyquire-2
Version: 
Proxies import/require in order to allow overriding dependencies during testing.
46 lines (36 loc) • 1.25 kB
JavaScript
/*jshint asi:true*/
/*global describe, before, beforeEach, it */
;
var assert = require('assert')
  , proxyquire = require('..')
  ;
describe('Multiple requires of same module don\'t affect each other', function () {
  describe('Given I require foo stubbed with bar1 as foo1 and foo stubbed with bar2 as foo2', function () {
    var foo1
      , foo2
      , bar1 = { bar: function () { return 'bar1'; } }
      , bar2 = { bar: function () { return 'bar2'; } }
      ;
    before(function () {
      foo1 = proxyquire('./samples/foo', { './bar': bar1 });
      foo2 = proxyquire('./samples/foo', { './bar': bar2 });
    })
    
    it('foo1.bigBar() == "BAR1"', function () {
      assert.equal(foo1.bigBar(), 'BAR1');  
    })
    it('foo2.bigBar() == "BAR2"', function () {
      assert.equal(foo2.bigBar(), 'BAR2');  
    })
    describe('and I change bar1.bar() to return barone', function () {
      before(function () {
        bar1.bar = function () { return 'barone'; };
      })
      
      it('foo1.bigBar() == "BARONE"', function () {
        assert.equal(foo1.bigBar(), 'BARONE');  
      })
      it('foo2.bigBar() == "BAR2"', function () {
        assert.equal(foo2.bigBar(), 'BAR2');  
      })
    })
  })
})