1

我正在尝试为运行 angular-meteor 应用程序设置速度/茉莉花环境。我添加了以下软件包:urigo:angular、angular:angular-mocks、sanjo:jasmine 和 velocity:html-reporter。测试运行良好,但每次测试运行时我都会通过 karma 弹出 Chrome,我想避免这种情况。

JASMINE_BROWSER=PhantomJS meteor run我按照教程http://farla.io/2015/05/11/unittesting-angular-meteor.html进行了尝试,但我不断收到错误消息:

'JASMINE_BROWSER' is not recognized as an internal or external command, operable program or batch file.

我错过了什么?

4

1 回答 1

1

几件事。首先,您没有说您使用的是 Linux Mac 还是 Windows。看,平台之间的事情会发生变化。由于我使用的是 Windows,我会假设:P

另外,您没有说您使用的是哪个版本的 Meteor、sanjo:jasmine、Karma (...)。看,版本之间的事情也会发生变化:) 我假设您正在使用:meteor 1.1.0.3 和 sanjo:jasmine 0.17(以及由 sj:0.17 自动拉取的 Karma)——因为我注意到该组合存在相同的问题。

我最近与此作斗争,您可以在此处阅读详细信息

简而言之 - 让我们从弹出窗口开始:默认情况下,当使用 Chrome 作为运行器目标时,在 Windows 上实际上有两个弹出窗口:带有 nodejs 的控制台和带有 Chrome 的窗口。你想摆脱两者。根据我的检查,隐藏nodejs控制台窗口需要对meteor/long-running-child-process (即补丁#1)的代码进行小的更改。然后,您可以通过添加一些命令行参数来“隐藏”Chrome,告诉它远离屏幕区域,这需要对 sanjo:jasmine 生成的 Karma 配置进行小幅更新 -请参阅此补丁(这是补丁#2)。我在 Windows 上使用了这两个更改,并且效果很好。在这些补丁成熟并且 sanjo 决定使用它们之前,使用它们的唯一方法是从 github 下载代码,合并这些补丁,然后使用本地 sanjo:jasmine 包而不是官方包。

当然,您可能想像其他人所说的那样放弃 Chrome 并获得 PhantomJS。如果您运行它,您将看不到“浏览器窗口”,因为 PhantomJS 没有显示任何内容。然而,在这个设置中,一旦选择了 PhantomJS 并且一旦它真正工作,你仍然会从我上面提到的 nodejs 获得控制台。你可以用我上面提到的补丁 #1 来摆脱它。

最后一件事 - 您未能将 PhantomJS 作为目标运行,因为大多数有用的建议都是错误的。目前(我的意思是 sanjo-jasmine:0.17/0.18)选择 PhantomJS 的正确方法是:

JASMINE_BROWSER=PhantomJS

仅此而已。没有一个词或一个点。这是因为该变量中的文本与这些字符串严格匹配:

'Chrome'
'ChromeCanary'
'Firefox'
'PhantomJS'
'SauceLabs'
'HiddenChrome' (that one works ONLY if using the second patch I mentioned)

还值得注意的是,Karma 支持一次使用多个目标(它可以同时启动和使用 ChromePhantomJS),但 sanjo:jasmine 目前一次只支持一个。尝试如下:

JASMINE_BROWSER=PhantomJS,Chrome

当前无法正常工作(->参见 ClientUnitTestFramework 的来源

于 2015-08-28T00:38:39.417 回答