2013-12-13 72 views
-2

我從來沒有爲我的代碼編寫測試場景... 你能告訴我如何使用茉莉花編寫我的代碼測試場景..因爲我需要編寫測試驅動開發代碼。 提供我的小提琴代碼..測試驅動開發javascript

http://jsfiddle.net/YYg8U/1/

var myNumbersToSort = [-1, 2, -3, 4, 0.3, -0.001]; 

function minAbs(x) { 
    return x.sort(function (a, b) { 
     return Math.abs(a) > Math.abs(b) ? 1 : -1; 
    })[0]; 
} 

document.getElementById('output').innerHTML = (minAbs(myNumbersToSort)); 

<div id='output'></div> 

回答

1

這是最好的簽出documentation

測試驅動開發的關鍵是測試驅動開發 - 所以你寫一個測試失敗(顯然失敗,因爲你沒有爲測試編寫任何代碼)。然後你寫出應該通過測試的代碼單元。然後沖洗並重復。

+0

感謝您的回覆......你可以爲它編寫短代碼 – user2565289

1

因此,就測試功能而言,我會開始編寫基本功能的測試(如Mark Robson說..你想先寫測試!!非常重要,因爲這就是爲什麼它是測試DRIVEN的含義測試是創建生產代碼背後的推動力)。這就是說..這可能是一個簡單的第一個測試,你可以寫minAbs的功能。

describe("getting the minimum absolute", function() { 
    it("will get the minimum absolute value", function() { 
     var numbersToSort = [-1, 2, -3, 4, 0.3, -0.001]; 

     var result = minAbs(numbersToSort); 

     expect(result).toBe(-0.001); 
    }); 
}); 

現在,只要將結果添加到「output」元素並測試它適當地工作,那麼您就有很多選項。根據實際項目的複雜性,它可以是任何東西,從簡單地將元素粘貼到文檔然後驗證其內容,或者如果這是具有模板和頁面以及各種功能的反覆/更復雜的測試情況,您可能需要設置更復雜的測試框架......理想情況下,您希望儘可能地從ui/view邏輯(向dom添加數據)分離業務邏輯(如何獲得排序數字)。

但爲了簡單起見,我會直接告訴你如何添加一些DOM來滿足你試圖在你的例子做:

測試之前做到這一點開始:

var element = document.createElement('div'); 
element.setAttribute("id", "output"); 
document.getElementsByTagName('body')[0].appendChild(element); 

然後在測試中,你會寫的期望......是這樣的:

expect(document.getElementById('#output').innerHTML).toBe("-0.001"); 

下面是關於如何你應該在福測試DOM操作一些更多的信息/討論TURE:

how to unit test DOM manipulation (with jasmine)

Javascript Unit Testing - DOM Manipulation

Unit testing Javascript that involves the DOM