Qunit前端单元测试(四)

来源:luqidong 发布时间:2013-11-03 20:07:20 点击数:

3.2.5 保证测试原子性

如果测试混在一起,可以会发生改通过的测试失败了,而该失败的测试却成功了。这是前面测试的副作用导致当前测试失败造成的。

78OA办公系统 

运行时第一个断言能通过,但是第二个失败,因为第一个断言之后,#qunit-fixture元素的innerHTML内容1了,第2次执行appendContent()方法后,内容是内容1内容2,而不是内容2

可以采用test()方法保持测试的原子性,保持每个断言不受到影响。应该对#qunit-fixture元素有依赖,修改和依赖任何其他东西会带来副作用。

78OA办公系统 

这样拆分之后,两个测试都能顺利通过。因为QUnit会在每个测试之后重置在#qunit-fixture中的元素,移除事件。只要使用这个元素中进行元素操作,就不用在测试之后手动的清除来保证原子性。

除此之外,QUnit还提供了?noglobals标志。

78OA办公系统 

通常的测试中,测试是一个合法的结果,测试就应该通过。上面也如此,但是如果加上“?noglobals”标志,测试就会失败,因为QUnit可以探测到它污染了window对象(测试结束后window对象多了一个属性pollute)。

未完待续 www.78oa.com 免费oa系统提供