测试与 CI
当测试工具可能触发高级防护时,请为功能测试使用独立配置。产品没有独立的测试端点或控制台环境。
为什么测试需要单独的构建
高级防护(VM Self Defending、VM Debug Protection、VM Domain Lock,以及它们对应的基础选项 selfDefending、debugProtection 和 domainLock)同样会作用于您自己的智能体、自动化工具和调试器。它们可能会停止执行、抛出无关的错误或产生错误的结果。disableConsoleOutput 会在全局范围内把 console 方法替换为空函数,影响页面上的所有脚本,而不仅是混淆后的脚本,因此基于日志的断言什么也看不到。请针对一个关闭了这些功能的独立测试构建运行功能测试。
功能测试配置
从共享设置派生出测试配置,并在选择预设之后应用以下覆盖项。它们会关闭 VM 版和基础版的 Self Defending、Debug Protection 和 Domain Lock,并关闭 disableConsoleOutput(Low、Medium 和 High 预设会启用它)。请显式传入这些值;省略某个选项可能会让预设将其启用。
CI
先运行原始代码,再让混淆后的测试构建通过同样的检查。记录输入、实际生效的选项、混淆器版本和构建警告,以便复现失败。控制台和直接 API 响应会报告警告和解析后的版本;javascript-obfuscator 包会在进度消息中报告版本,但不会报告警告。
功能检查通过后,使用原始的生产设置另行生成发布产物。在其目标运行环境中、在允许的域名上验证这个确切的产物,并且不要使用其防御旨在检测的自动化工具或调试器。测试构建通过,并不代表受保护的发布版本已通过验证。
通过控制台、javascript-obfuscator 包(CLI 或 Node.js)和 API 进行的构建使用相同的保护选项。API 测试使用常规的凭据和端点,并适用正常的用量限制。在 CI 中,请将测试输出和发布输出放在不同路径下,并且只部署发布产物。
如果执行仍然失败,请参阅诊断 VM 运行时错误。
