【问题标题】:Intern - window is undefined实习生 - 窗口未定义
【发布时间】:2015-04-01 02:00:07
【问题描述】:

我在 intern-geezer 中运行了一个循环测试,在 100 个非常相似的测试中大约有 20 个成功运行。然后突然:

FATAL ERROR
ReferenceError: window is not defined

然后循环停止。我的代码中没有明确调用windowdocument。它是纯 JS。我正在使用实习生 geezer,2.2.2。错误堆栈中引用的行号完全没有意义。他们很遥远。

我已阅读从命令切换的建议:

./node_modules/.bin/intern-client config=tests/intern

到:

./node_modules/.bin/intern-runner config=tests/intern

但我不想连接到服务器或打开浏览器(那里发生了一个单独的、奇怪的加载错误,似乎是 geezer 特有的)。我想在命令行中进行。感谢您的帮助,我是实习生的新手。

【问题讨论】:

  • 只是出于好奇,如果您只想在 Node 客户端中运行测试,为什么还要使用 geezer? Geezer 的存在只是为了能够在旧版浏览器中运行测试。
  • 好吧,我最终希望能够在旧 IE 中运行测试。首先,我想让基本的单元测试正常工作。

标签: javascript unit-testing intern


【解决方案1】:

window 是一个浏览器对象,因此它不会在 Node.js 中可用。如果你想在节点客户端(intern-client)中专门运行测试,你需要确保你没有使用(并且你的依赖项都没有使用)任何引用浏览器对象的代码,比如document,@ 987654324@、navigator

如果堆栈跟踪行号关闭,则可能是代码覆盖率检测。您可以通过将 Intern 配置中的 excludeInstrumentation 属性设置为 /./ 来禁用它。

【讨论】:

  • 我的代码(或我的一个依赖项)都没有调用窗口、文档或导航器。测试非常相似。为什么有些人会跑而不是其他人?这不是语法错误。我花了一整个下午的时间来搜索测试,并尝试注释掉各种组合。
【解决方案2】:

您可能在实习生配置文件中将“Html”设置为记者:

intern.reporters = [
    { id: 'Html' },
    { id: 'JUnit', filename: 'test-reports/quality/functional/junit.xml' },
    ...,
];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 2021-10-06
    • 2019-06-03
    • 2021-01-15
    • 2019-10-12
    • 2013-08-07
    相关资源
    最近更新 更多