验证语言(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);
}
}
答案 0 :(得分:1)
您应该将其视为测试逻辑,而不是实现。是的,测试一个for-loop
似乎很愚蠢,但是测试一下并不是愚蠢的,有些东西会附加正确的次数。如果您有一个一个错误怎么办?如果逻辑在未来完全改变怎么办?测试意味着代码按预期运行的“证明”,而不是编码框架正在运行。
因此,如果您的功能/逻辑被覆盖,并且您只是想测试它是否在浏览器中保持一致,那么我会说继续测试该功能,因为再次,它可能会在未来发生变化,或者您可能只是你错过了一个错误。另一方面,如果您正在测试Javascript框架本身(即确保for loop
迭代列表中的元素),那么您可以绕过为此编写测试。
答案 1 :(得分:1)
不,您不应该测试for循环的行为是否符合预期。测试你编写的代码,而不是运行它的语言。
整个概念存在根本缺陷:您意识到您的测试是用JavaScript编写的?如果您不信任JavaScript实现,您怎么可能相信测试的有效性?
答案 2 :(得分:0)
除非你是那个为该语言编写for循环实现的人,否则测试构造是没有意义的。测试您编写的代码,并假设该语言的行为符合设计。
当然,语言并不总是按照设计行事,如果你发现了缺陷,你应该报告它,但是如果你把所有时间花在测试底层语言而不是你自己的代码上,那你就浪费了很多你的时间。