2016-06-10 50 views
0

我寫了一個基於承諾的API。單元測試是最好的方法?茉莉花是一個好方法嗎?使用Jasmine的api單元測試承諾

另外還可以給我一個例子,如何可以單元測試承諾?一個單位是否應該測試「當時」以及「捕獲」部分?

回答

1

茉莉花絕對是做基於承諾的單元測試的強有力的選擇。在不太瞭解API的情況下,下面是幾個例子,說明如何在等待承諾解決或失敗時進行單元測試。

下面示例中的關鍵字是傳遞給每個單元測試(it塊)的done變量。這讓茉莉花知道測試是異步的,茉莉花會在從單元測試開始之前調用done函數。

希望這會有所幫助!

describe('Unit tests', function() { 
    it('promise should succeed', function (done) { 
    myApi.function().then(function(data) { 
     //assert data came back correctly 
     done(); 
    }).catch(function() { 
     fail(); 
    }); 
    }); 

    it('promise should throw error', function() { 
    myApi.function().then(function(data) { 
     fail(); 
    }).catch(function(error) { 
     //assert error has been thrown correctly 
     done(); 
    }); 
    }); 
}); 
0

茉莉花是單元測試框架,它提供了測試運行,總部設在斷言方法和嘲笑/間諜。這是單元測試JavaScript代碼的一種流行方式。它不比任何其他可用的方法/框架更好,應該根據其他選項進行評估,以確定它是否適合您的項目。

沒有示例代碼,單元測試承諾應該與單元測試任何其他代碼沒有區別。對IO依賴關係進行存根並評估所有關鍵邏輯路徑。如果你的承諾明確拋出的可能是一個有價值的方法來斷言。與then相同,調用then應該允許您測試您的解決邏輯。

必須通過thencatch與您的代碼交互可能不是行使您的承諾邏輯的最有效方式。如果存在大量的邏輯,則將其封裝在承諾之外的函數中是很好的,以便於進行單元測試。然後,通過解決承諾,可輕易測試該核心邏輯的接口。