5

在我收集有关如何使用 Velocity 的知识的过程中,我遇到了一个片段,其中提到了一个 shell 变量来设置用于在 PhantomJS 中运行 Karma 的浏览器 Velocity,以在每次我运行我的应用程序时创建一个 Chrome 窗口弹出窗口开发模式。当时我对此不以为然,但在我的两个应用程序中实施了一些测试之后,我可以说让测试在弹出窗口中运行是一种恼人的痛苦。

有人知道如何让测试在 PhantomJS 中运行而不是在 Chrome 弹出窗口中运行吗?我认为该变量类似于 VELOCITY_BROWSER=PhantomJS,但这似乎不起作用。另外,有没有办法设置 Meteor 以便它简单地将其设置为默认值,这样我就不必每次都创建变量,就像在配置或其他东西中一样?

4

2 回答 2

9

我为那些发现这个问题的人找到了答案,并且还想知道如何防止 Karma 弹出窗口。

我正在使用 sanjo:jasmine 测试套件,它使用 Karma 进行客户端集成测试。您可以在运行流星时将默认浏览器设置为 PhantomJS,只需将其添加到您的环境中即可:

JASMINE_BROWSER=PhantomJS

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

JASMINE_CLIENT_UNIT=0

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

#!/bin/sh
JASMINE_BROWSER=PhantomJS meteor

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

alias meteor=JASMINE_BROWSER=PhantomJS meteor

我可能在语法上略有偏差,但我认为这应该可行。

要使用 PhantomJS,您确实需要安装它,所以在终端中运行它:

npm install -g phantomjs

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

brew install phantomjs

希望这对将来的某人有所帮助。

于 2015-01-31T12:52:49.713 回答
0

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

如果您想坚持使用 Chrome 窗口,可以使用 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])

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

于 2015-08-19T14:13:47.433 回答