2017-04-24 66 views
1

我剛開始學習使用Jasmine進行單元測試。我已經瀏覽了茉莉花的official documentation,並在整個計算器上搜索了很多。請參閱下面的代碼。我什麼時候需要在Jasmine的beforeEach塊中使用?

describe('calculator', function() { 
    var calculator; 
    beforeEach(function(){ 
    calculator = new myApp.Calculator(); 
    }); 

    describe('sum', function() { 
    it('1 + 1 should equal 2', function() { 
     expect(calculator.add(1, 1)).toBe(2); 
    }); 
    }); 

    describe('subtract', function() { 
    it('3 - 2 should equal 1', function() { 
     expect(calculator.subtract(3, 2)).toBe(1); 
    }); 
    }); 

}); 

這裏,我已經初始化/在beforeEach塊創建計算器的實例。如果我將它直接寫入第一個describe塊而不使用beforeEach塊,它也可以正常工作。

我瞭解beforeEachafterEach的用戶。但在這種情況下(或任何此類情況),我真的需要使用beforeEach哪裏沒有人更新Calculator實例,在每個規範中我們只使用calculator的方法?如果我使用beforeEach,它會在每次測試之前每次創建一個新實例。但是爲什麼我總是需要一個新的實例,其中沒有一個測試用例不會更改/更新我的實例?

+0

當你的測試開始產生不同的結果時,你會做什麼,當運行單挑而不是散裝? –

回答

0

如果您將直接在describe中放入一行代碼以創建計算器實例,而不使用beforeEach在這種情況下,實例將只創建一次(在測試用例運行開始時)。 但是,如果你將把beforeEach塊,在這種情況下,將爲每個單獨的測試用例運行創建新的實例,所以每個測試用例將有一個新的實例。

對每個特定的測試用例都有一個新的實例是一個很好的做法。因爲測試用例不應該依賴於另一個測試用例,這是大拇指規則。測試用例應始終以依賴順序運行。

+0

這正是我的查詢。爲什麼我總是需要一個新的實例,如果我的測試用例沒有一個不依賴另一個,或者沒有一個測試用例更新計算器實例?而且我不在這裏維護任何狀態。你能舉出任何失敗或不合適的例子! –

+0

是的,對於您當前的場景來說沒問題,但這不是一個好習慣,因爲如果其他人稍後在您的代碼上跳轉,並且他們開始編寫依賴於實例的新測試用例,那麼這將是一種情況,它失敗。 –

相關問題