2017-08-09 14 views
0

我想問一下,是否可以測試調用與sinon或mocha條件相關的正確函數。例如我有級騎士,我想知道當參數'data'爲true時是否調用函數(knightRun)測試調用正確的功能取決於條件 - sinon/mocha - javascript

export class Knight { 

     createKnight(data,reducer) { 
      if (data) { 
       this.knightRun(reducer); 
      } else if (!data) { 
       this.knightFight(reducer); 
      } 
     } 

     private knightFight(reducer) { 
      // do something 
     } 

     private knightRun(reducer) { 
      // do something 
     } 

    } 

回答

0

您可以使用間諜來檢查是否調用了某個特定的函數。 Sinon.js是一個庫,它提供了一種在爲JavaScript編寫單元測試時監視函數的方法。

例如

describe('Knight class',() => { 
    it('should call knightRun when data is false',() => { 
    const knight = new Knight().createKnight(false, null) 
    sinon.spy(knight, "knightRun") 
    assert(knight.knightRun.calledOnce) 
    }) 

    it('should call knightFight when data is true',() => { 
    const knight = new Knight().createKnight(true, null) 
    sinon.spy(knight, "knightFight") 
    assert(knight.knightFight.calledOnce) 
    }) 
}) 

另外,private關鍵字不是有效的JavaScript。