2016-09-16 82 views
3

我已經在的jsfiddle創建a simple example來測試我在項目中遇到的問題執行:測試該功能在ES6構造用茉莉花

describe('testing es6 and jasmine', function() { 
    describe('let',() => { 
    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let 
    it('is es6 works', function() { 
     class Test { 
     constructor() { 
      var x = this.sum(1, 1); 
     } 
     sum(a, b) { 
      return a + b; 
     } 
     } 
     var test = new Test(); 
     spyOn(test, 'sum').and.callThrough(); 
     expect(test.sum).toBeDefined(); 
     expect(test.constructor).toBeDefined(); 
     expect(test.sum).toHaveBeenCalled(); 
    }); 

    }); 
}); 

問題是,我在構造函數中執行的方法,我想檢查它是否被執行。爲什麼在我的例子中,茉莉花告訴它不是?

回答

5

問題是,您在安裝間諜之前調用構造函數(使用new Test)。所以這個函數在被窺探的時候已經被調用了。

爲了解決這個問題,你可以窺視Test.prototype.sum調用構造函數之前

spyOn(Test.prototype, 'sum').and.callThrough(); 
var test = new Test(); 

查看更新fiddle