2013-12-13 74 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