在我收集有关如何使用Velocity的知识的过程中,我遇到了一个片段,其中提到了一个shell变量来设置用于在PhantomJS中运行Karma的浏览器Velocity,因为我每次运行时都会创建一个Chrome窗口弹出窗口我的应用程序在DEV模式下。当时我耸了耸肩,但在我的两个应用程序中实施了一些测试之后,我可以说在弹出窗口中运行测试会让人感到烦恼。
是否有人知道如何运行测试以使其在PhantomJS中运行而不是在Chrome弹出窗口中运行?我认为该变量类似于VELOCITY_BROWSER = PhantomJS,但这似乎不起作用。另外,有没有办法设置Meteor,以便它只是将其设置为默认值,因此我不必每次都创建变量,比如在配置或其他内容?
答案 0 :(得分:9)
我找到了那些找到这个的答案,并且也想知道如何防止Karma弹出窗口。
我正在使用sanjo:jasmine测试套件,它使用Karma进行客户端集成测试。您可以在运行meteor时将默认浏览器设置为PhantomJS:
JASMINE_BROWSER=PhantomJS
或者,如果您只是想完全关闭客户端集成测试,只需添加以下内容:
JASMINE_CLIENT_UNIT=0
因此,例如,您可以像JASMINE_BROWSER=PhantomJS meteor
一样运行您的应用,并且您将不再获得弹出窗口。我所做的是在我的app根文件夹中创建了一个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
希望这有助于将来。
答案 1 :(得分:0)
在Sanjo:Windows上的jasmine 0.17.0中,PhantomJS在meteor的自动更新功能方面存在一些问题。更改应用程序代码时,您可能会遇到重新运行测试的问题。
如果您想坚持使用Chrome浏览器窗口,可以使用Chrome的命令行选项隐藏它,但您需要更新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])
以包含这些选项:< / p>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^.*/restricted/.*$ [NC]
RewriteCond %{QUERY_STRING} !^.*key=SECRET.*$ [NC]
RewriteRule ^(.*)$ /$1 [R=403,L]
窗口会显示出来,但会在屏幕外显示,而且幸运的是,它甚至无法窃取键盘焦点。