0

验证语言 ( 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);
    }
}
4

3 回答 3

1

您应该将其视为测试您的逻辑,而不是实现。是的,测试 a 可能看起来很愚蠢for-loop,但测试它并不愚蠢,也就是说,某些东西被附加了正确的次数。如果你有一个错误的错误怎么办?如果将来逻辑完全改变怎么办?测试的意思是“证明”代码的行为符合预期,而不是编码框架正在工作。

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

于 2013-07-09T15:38:11.110 回答
1

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

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

于 2013-07-09T15:40:45.587 回答
0

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

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

于 2013-07-09T15:38:03.030 回答