2014-08-29 150 views
0

功能假如我有內外部下列功能的JavaScript文件sampleFunction.js內:測試JavaScript代碼使用摩卡

function mathOperation(a,b){ 
    var sum = a + b; 
    var diff = a - b; 
    var product = a * b; 
} 

而且我想在這個功能使用mochaJS從另一個單獨的文件進行單元測試,比如test.js。在那個文件中,我想爲不同的輸入測試所提到的功能,並測試結果。例如,我想檢查總和是否爲30,如果我將(20,10)傳遞給函數,則差值爲10。

所以在我的測試文件,代碼會是這樣: -

var expect = chai.expect; 
describe('Testing the function mathOperation()',function(){ 
    //test cases for checking sum, difference and product in mathOperation() 
    ... 
    ... 
}); 

我怎麼去寫測試用例來檢查總和,差異等方面的價值?

我問這個問題的原因是要知道我們如何測試用JavaScript編寫的更大的函數,它不返回任何內容,並知道我們是否可以測試和比較函數內各個變量的值。

+0

如果你不返回/暴露任何東西,你如何測試函數?你所能做的就是測試'mathOperation'運行並且不會拋出錯誤。 – James 2014-08-29 11:26:28

+0

這個函數看起來是孤立的,除了參數外,根本不影響外部世界,我覺得缺少那裏的東西。 – Mritunjay 2014-08-29 11:26:34

回答

0

我們如何測試JavaScript編寫不返回任何更大的功能...

除非該功能更新/改變東西外部則無法考證。唯一可以測試的是該功能已成功完成。

...並比較各種變量的值的功能

你不能裏面,這是沒有任何關係的單元測試和摩卡特別,這只是普通的老JavaScript規則。在函數中聲明的變量只有scoped,它們不能在外部訪問。

+0

如果我們測試這個函數是否改變了外部的東西,那麼這將是一種功能測試的權利?一個人如何對一個函數進行單元測試呢? – booleanhunter 2014-08-29 11:36:57

+0

@ashwinator是的,但給出的例子就是你所能做的*,實際上這將是一個黑盒測試。我認爲問題在於你的函數的設計,如果你想讓它可測試,那麼你需要返回結果或者以某種方式公開結果*,否則你怎麼才能驗證它是否正確工作?毫無疑問,在返回數據時(即使它純粹是爲了測試目的),沒有必要在生產中實際做任何事情。 – James 2014-08-29 11:39:27

+0

的確,它確實有道理。 – booleanhunter 2014-08-29 11:43:25