'JASMINE_BROWSER' 当 运行 对流星 angular 应用程序进行客户端单元测试时,'JASMINE_BROWSER' 未被识别为内部或外部命令

'JASMINE_BROWSER' is not recognized as an internal or external command when running client side unit test on meteor angular app

我正在尝试为 运行ning angular-meteor app.I 设置 velocity/jasmine 环境已添加以下包:urigo:angular、angular:angular-mocks,sanjo:jasmine,和 velocity:html-reporter。测试 运行ning 很好,但我每次测试 运行 时都会通过 karma 弹出 Chrome,我想避免这种情况。

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

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

我错过了什么?

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

此外,您没有说明您使用的是哪个版本的 Meteor,sanjo:jasmine,Karma (...)。看,版本之间的事情也有所不同 :) 我假设您使用的是:meteor 1.1.0.3 和 sanjo:jasmine 0.17(并且 Karma 由 sj:0.17 自动提取)- 因为我注意到了同样的问题在那个组合上。

我最近为此苦苦挣扎,你可以阅读 details here

简而言之 - 让我们从 windows 弹出窗口开始: 默认情况下,当使用 Chrome 作为 运行ner 目标时,在 Windows 上实际上有两个弹出窗口:控制台与 nodejs 和 window 与 Chrome。你想摆脱两者。根据我的检查,隐藏了 nodejs 控制台 window requires a small change to code to meteor/long-running-child-process(that's patch #1). Then, you can "hide" Chrome by adding some commandline params that tell it to move far away from the screen area, that requires a small update to Karma's configuration that sanjo:jasmine generates - see this patch(那是补丁 #2)。我在 Windows 上使用了这两个更改,效果非常好。在这些补丁成熟并且 sanjo 决定使用它们之前,使用它们的唯一方法是从 github 下载代码,合并这些补丁,并使用本地 sanjo:jasmine 包而不是官方包。

当然,您可能想放弃 Chrome 并像其他人所说的那样获得 PhantomJS。如果你 运行 它,你将看不到 'browser window' 因为 PhantomJS 没有显示任何东西。然而,在这个设置中,一旦 PhantomJS 被 selected 并且一旦它真正工作,你仍然会从我上面提到的 nodejs 获得控制台。你可以用我上面提到的补丁 #1 摆脱它。

最后一件事 - 你在 运行ning PhantomJS 作为目标时失败了,因为大多数有用的建议都是错误的。目前(我的意思是,sanjo-jasmine:0.17/0.18)select PhantomJS 的正确方法是:

JASMINE_BROWSER=PhantomJS

仅此而已。一言不发。这是因为该变量的文本与这些字符串严格匹配:

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

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

JASMINE_BROWSER=PhantomJS,Chrome

目前无法使用 (-> see source of ClientUnitTestFramework)