我试图将SlimerJS与Karma集成,以便能够测试ECMAScript 6和AngularJS代码。
当我直接使用SlimerJS测试ES6代码时,它会加载我安装的版本0.10.2,它适用于我的ES6代码。 我的Firefox安装版本为50.1.0,当我直接通过SlimerJS调用它时,它可以正常使用SlimerJS。正如SlimerJS文档所指示的那样,我的SLIMERJSLAUNCHER变量已正确配置。
但是我需要测试AngularJS和ES6代码,所以我需要Karma,但是没有找到将SlimerJS与Karma集成的方法。
我尝试使用karma-slimerjs-launcher,但它正在加载Firefox和SlimerJS的旧版本。 当我打电话给Karma时,karma-slimerjs-launcher正在运行Firefox 38和SlimerJS 0.9.6,因此我失去了对ECMAScript 6的支持。
有一种方法可以让karma-slimerjs-launcher调用我在系统上安装的Firefox和SlimerJS版本,而不是调用那些" embedded"它似乎带来的版本?
或者有更好的方法来整合Karma和SlimerJS而不使用karma-slimerjs-launcher?
感谢。
答案 0 :(得分:0)
我发现了问题的答案。 而不是使用过时版本附带的启动器,可以在没有任何浏览器的情况下简单地启动业力。
输入:
karma start
然后可以使用以下命令启动SlimerJS无头:
Xvfb-run ./slimerjs myscript.js
在JS脚本中,我们将导航指向karma服务器:
window.location.href = 'http://localhost:9876/';
SlimerJS进入Karma服务器后,测试开始运行。
这种方法的缺点是需要两个终端窗口来运行测试,所以我在Python中做了一个小脚本来解决这个问题,并作为启动器使用:
#!/usr/bin/env python3
import subprocess
import time
karma = ''
slimerjs = ''
while True:
try:
if not karma:
# Load a Karma server
print('\nKarma is loading...\n')
karma = subprocess.Popen('./karma start', shell=True)
# delays for 2 seconds for waiting Karma server
time.sleep(2)
# Load a headless SlimerJS that points to Karma server
slimerjs = subprocess.Popen(
'xvfb-run slimerjs slimerjs-cfg.js > slimerjs.log', shell=True)
print('\nSlimerJS is running...\n')
except KeyboardInterrupt:
karma.kill()
print('\n\nKarma is stopped...\n')
slimerjs.kill()
print('\nSlimerJS is stopped...\n')
break
这样就可以在一个控制台窗口中与slimerJS一起启动业力,只需输入:
./karma-run.py
如果其他人在将业力与slimerjs整合到测试ES6时遇到同样的问题,那么这就是我的解决方案。