2017-09-18 81 views
0

我知道摩卡具有全球前後,每個測試之前和之後,但我想是測試特定的前後。像SoapUI一樣。摩卡/柴 - 測試具體設置和拆除

例如,假設我有一個測試檢查用戶的創建是否有效。

我想在測試之前從數據庫中刪除用戶,如果它存在的話。我希望測試能夠確保用戶在測試後被移除。但我不想爲每個測試做這個,因爲只有一個測試會真正創建用戶。其他測試將刪除用戶,更新用戶,未能創建已存在的用戶等。

這是可能的,還是必須在測試中包含設置和拆卸代碼?如果是這樣,我如何確保設置和拆卸都正確執行,與測試結果無關?

回答

4

對於那些我需要有特殊的安裝和拆卸代碼,但不是來自他們的兄弟姐妹,否則區分的測試,我只是把一個describe塊帶有空標題:

describe("SomeClass",() => { 
    describe("#someMethod",() => { 
     it("does something",() => {}); 
     it("does something else",() => {}); 

     describe("",() => { 
      // The before and after hooks apply only to the tests in 
      // this block. 
      before(() => {}); 
      after(() => {}); 

      it("does something more",() => {}); 
     }); 
    }); 
}); 

這是可能的,還是必須在測試中包含設置和拆卸代碼?如果是這樣,我如何確保設置和拆卸都正確執行,與測試結果無關?

可以放安裝和拆卸測試本身的代碼(內部的即傳遞給it回調)。但是,摩卡將把任何故障視爲測試,期間。在傳遞給it的回調中發生故障並不重要。斷言庫允許您提供自定義錯誤消息,這可以幫助您找出究竟發生了什麼故障,但Mocha將以同樣的方式看到it中的所有失敗:測試失敗。如果您希望Mocha以與測試失敗不同的方式處理安裝/拆卸代碼中的故障,那麼您的必須使用來使用上面顯示的鉤子。

+0

謝謝,那我就知道了。所以,雖然有點迂迴,但很高興知道有辦法處理安裝和拆卸。 –