2014-11-22 34 views
0

我有一個文件 「mochatest.js」,看起來像這樣:摩卡測試共享狀態,因爲差的範圍?

(function(){ 
    var MyObject = function(){ 
     var myCount= 0; 
     return{ 
      count: myCount 
     }; 
    }(); 
    module.exports = MyObject 
})(); 

和摩卡測試文件看起來像這樣:

(function(){ 
var assert = require("assert"); 

    describe("actual test", function(){ 

     it("should start with count of zero", function(){ 
      var obj = require("../mochatest.js"); 
      assert.equal(obj.count, 0); 
     }); 
     it("should be able to increment counter", function(){ 
      var obj = require("../mochatest.js"); 
      obj.count=1; 
      assert.equal(obj.count, 1); 
     }); 
     it("should start with count of zero", function(){ 
      var obj = require("../mochatest.js"); 
      assert.equal(obj.count, 0); 
     }); 
    }); 
})(); 

我的第三次試驗失敗:的AssertionError:1 == 0所以感覺像第二個測試中的obj和第三個測試中的obj是一樣的。我預計它會是一個新的。

我編碼了一些像單身人士?爲什麼在第三次測試中count == 1?我究竟做錯了什麼?

回答

0

我想,我想。我改變了兩者並得到了我預期的行爲。

(function(){ 
    var MyObj = function(){ 
     var myCount= 0; 
     return{ 
      count: myCount 
     }; 
    } // <= note no more(); 
    module.exports =MyObj; 
})(); 

和我的方式設置的測試(只是beforeEach一次)

(function(){ 
var assert = require("assert"); 

    describe("actual test", function(){ 
     var obj; 
     beforeEach(function(done){ 
      var MyObject = require("../mochatest.js"); 
      obj = new MyObject(); 
      done(); 
     }); 
     it("should start with count of zero", function(){ 
      assert.equal(obj.count, 0); 
     }); 
     it("should be able to increment counter", function(){ 
      obj.count=1; 
      assert.equal(obj.count, 1); 
     }); 
     it("should start with count of zero", function(){ 
      assert.equal(obj.count, 0); 
     }); 
    }); 
})();