我有一个Ember CLI项目,我正在使用Maven构建该项目,我正试图弄清楚如何让Maven能够运行测试,而无需事先假设全局安装PhantomJS。我正在使用前端maven插件动态安装特定版本的node和npm,调用npm安装、bower安装和ember构建;这一切已经奏效了。我现在要做的也是调用ember测试,如果测试失败,就让maven构建失败。目前,只要"phantomjs"在运行maven构建的机器的路径上,这就可以工作;然而,许多开发人员使用这个构建,他们不是ember开发人员,也不会有phantomjs。我也不想确保在我的CI服务器上全局安装phantomjs。
有没有办法将PhantomJS指定为package.json中的依赖项,并让testem(ember的默认测试运行程序)在node_modules中进行安装?我可以提供PhantomJS的路径,以某种在文档中不明显的方式进行测试吗?或者,如果我想运行测试,我只需要接受隐藏的手动依赖关系吗?
是的,你可以做到。
首先,将phantomjs-prebuilt
作为开发依赖项安装:
npm install --save-dev phantomjs-prebuilt
然后更改package.json
脚本,在运行测试之前将项目本地node_modules添加到路径中:
"scripts": {
"build": "ember build",
"start": "ember server",
"test": "PATH=$PATH:./node_modules/.bin ember test"
},
然后像正常一样运行测试
npm install && bower install && npm test
这将启动您的项目本地版本的phantomjs来运行测试。