在没有 Chrome 弹出窗口的情况下启动 Meteor with Velocity 测试

Starting Meteor with Velocity test without the Chrome pop-up

为了收集有关如何使用 Velocity 的知识,我 运行 在一个片段中提到了一个 shell 变量来设置用于 运行 PhantomJS 中的 Karma 的浏览器 Velocity与每次我 运行 我的应用程序处于 DEV 模式时创建一个 Chrome window 弹出窗口不同。当时我耸了耸肩,但在我的两个应用程序中实施了一些测试后,我可以说在弹出窗口 window 中进行测试是一件令人讨厌的痛苦 window。

有人知道如何在 PhantomJS 中 运行 而不是在 Chrome 弹出窗口 windows 中获得测试 运行ning 吗?我认为该变量类似于 VELOCITY_BROWSER=PhantomJS,但这似乎不起作用。此外,有没有一种方法可以设置 Meteor,以便它只需将其设置为默认值,这样我就不必每次都创建变量,比如在配置或其他东西中?

我为那些找到这个的人找到了答案,也想知道如何防止 Karma 弹出窗口。

我正在使用 sanjo:jasmine 测试套件,它使用 Karma 进行客户端集成测试。您可以将默认浏览器设置为 PhantomJS,只需在 运行 meteor:

时将其添加到您的环境即可
JASMINE_BROWSER=PhantomJS

或者,如果您只想完全关闭客户端集成测试,只需添加以下内容:

JASMINE_CLIENT_UNIT=0

因此,例如,您可以 运行 您的应用程序 JASMINE_BROWSER=PhantomJS meteor,您将不会再看到弹出窗口。我所做的是在我的应用程序根文件夹中创建了一个 meteor.sh,我用它来启动环境变量,如下所示:

#!/bin/sh
JASMINE_BROWSER=PhantomJS meteor

这只是为了方便起见,这样我就不必记住变量来执行此操作。这应该适用于任何基于 *nix 的 OS。如果需要,您也可以创建别名。它看起来像:

alias meteor=JASMINE_BROWSER=PhantomJS meteor

我的语法可能略有偏差,但我认为应该可以。

要使用 PhantomJS,您需要安装它,所以 运行 在终端中这样做:

npm install -g phantomjs

或者,如果您使用 Mac 运行(您需要安装 brew):

brew install phantomjs

希望这对以后的人有所帮助。

在 sanjo:jasmine 0.17.0 on Windows 中,PhantomJS 在 meteor 的自动更新功能方面存在一些问题。当您更改应用程序的代码时,重新运行 测试可能会遇到问题。

如果您想坚持使用 Chrome window,可以使用 chrome 的命令行选项稍微隐藏它,但您需要更新 karma-chrome-launcher\index.js 包括这些:

return [
  '--user-data-dir=' + this._tempDir,
  '--no-default-browser-check',
  '--no-first-run',
  '--disable-default-apps',
  '--disable-popup-blocking',
  '--disable-translate',
  '--window-position=-800,0',    // <-- added
  '--window-size=800,600'        // <-- added
].concat(flags, [url])

window 会出现,但会在屏幕外创建,幸运的是甚至不会窃取键盘焦点。