测试for-in循环有什么意义吗?

时间:2013-07-09 15:36:00

标签: javascript testing

验证语言(ES5)在浏览器中的功能是否相同?

或者控制结构的语言实现如此强大以至于不需要它? 这是一个示例测试。

var test_set = [null, undefined, NaN, true, false, 1, 'a',{test:'test'},[0], function(){}, /test/];

var index, 
    key;

for(index = 0; index < test_set.length; index++){
    console.log('Mark | ' + test_set[index]);
    for (key in test_set[index]) {
        console.log(key);
    }
}

3 个答案:

答案 0 :(得分:1)

您应该将其视为测试逻辑,而不是实现。是的,测试一个for-loop似乎很愚蠢,但是测试一下并不是愚蠢的,有些东西会附加正确的次数。如果您有一个一个错误怎么办?如果逻辑在未来完全改变怎么办?测试意味着代码按预期运行的“证明”,而不是编码框架正在运行。

因此,如果您的功能/逻辑被覆盖,并且您只是想测试它是否在浏览器中保持一致,那么我会说继续测试该功能,因为再次,它可能会在未来发生变化,或者您可能只是你错过了一个错误。另一方面,如果您正在测试Javascript框架本身(即确保for loop迭代列表中的元素),那么您可以绕过为此编写测试。

答案 1 :(得分:1)

不,您不应该测试for循环的行为是否符合预期。测试你编写的代码,而不是运行它的语言。

整个概念存在根本缺陷:您意识到您的测试是用JavaScript编写的?如果您不信任JavaScript实现,您怎么可能相信测试的有效性?

答案 2 :(得分:0)

除非你是那个为该语言编写for循环实现的人,否则测试构造是没有意义的。测试您编写的代码,并假设该语言的行为符合设计。

当然,语言并不总是按照设计行事,如果你发现了缺陷,你应该报告它,但是如果你把所有时间花在测试底层语言而不是你自己的代码上,那你就浪费了很多你的时间。