使用 Test262 的正确姿势
Test262 是一套由 TC39 制定的标准化 ECMAScript 规范测试集。Test262 促成我们在不同的 JavaScript 运行环境中同样的 JavaScript 代码都能获得预期的同样结果,也将 JavaScript 语言的语义细节都使用避免歧义的标准文本在规范中详细地记录了下来,让我们更加容易理解 JavaScript 的行为。如果你不了觉 TC39 与 ECMAScript 的相关信息,可以看我之前写过的一篇文章 《TC39 与 ECMAScript 提案》。
基本用法
1 | # 拉取代码 |
所有的测试集都在 /test 目录,命令行只需要指定 JS 引擎和测试路径即可,比如现在我想测试一下 node 对内置对象 BigInt 的支持情况,我可以在 test262 项目下执行:
1 | $ test262-harness \ |
测试 JS 引擎
下面是支持的 hostType:
Host | Name | Type | Supported Platforms |
---|---|---|---|
ch¹ | ChakraCore | CLI | Any |
d8¹ | V8 | CLI | Any |
engine262 | Engine262 | CLI | Any |
graaljs | GraalJS | CLI | Any |
jsshell¹ | SpiderMonkey | CLI | Any |
jsc¹ | JavaScriptCore | CLI | Mac² |
nashorn | Nashorn | CLI | Any |
node | Node.js | CLI | Any |
qjs4 | QuickJS | CLI | Any |
xs | Moddable XS | CLI | Any |
chrome | Google Chrome | Browser | Any |
edge | Microsoft Edge | Browser | Windows |
firefox | Mozilla Firefox | Browser | Any |
safari | Apple Safari | Browser | Mac |
详情见 eshost
测试 Polyfill
例如你要实现一个 Promise 的 Polyfill:
1 | # polyfill-promise.js |
然后通过 prelude 参数调用:
1 | $ test262-harness \ |
使用 Test262 的正确姿势