2017-08-19 53 views
0

我剛進入單元測試的第一次。在Node中使用Mocha作爲測試框架。我遇到的所有示例都在it()內創建變量。它們是否在it()內部或外部創建有關係嗎?例如,如果我在describe()內有多個it(),我需要在所有it()之間使用相同的模擬數據。如果可能,我寧願不重複重複創建相同的變量。摩卡咖啡單元測試:在哪裏創建變量

describe ('MyClass', function() { 
    let myObj = new MyObj // Mock data here 
    it ('Should be...', function() { 
     .... 
    }) 
    it ('Should be...', function() { 
     .... 
    }) 
    ... 
}) 

回答

4

這是完全可以接受的變量住你的個人it塊外,但根據您的使用情況下,它可能並不合適。

對於您不希望更改的對象,Object.freeze是一個選項:const myObj = Object.freeze(new MyObj)

如果您希望您的測試更改您的對象,則應該使用beforeEach以確保它們恢復到正確的狀態;這會阻止你的it塊彼此污染,避免不愉快的調試過程。

例如:

describe('MyClass', function() { 
    let myObj 

    beforEach(() => { 
    myObj = new MyObj() 
    }) 

    it('changes myObj',() => { 
    changeProp(myObj.sum) 
    expect(myObj.sum).toEqual(4) 
    }) 

    it('depends on myObj being the same',() => { 
    expect(myObj.sum).toEqual(2) 
    }) 
}) 

或者,也可以避開該脂肪箭頭語法和依靠在摩卡塊之間共享的上下文:

beforeEach(function() { 
    this.myObj = new MyObj() 
}) 

it('changes myObj', function() { 
    addTwo(this.myObj.sum) 
    expect(this.myObj.sum).toEqual(4) 
}) 

it('depends on myObj being the same', function() { 
    expect(this.myObj.sum).toEqual(2) 
}) 
相關問題