【问题标题】:How to integrate Karma with SlimerJS for testing ES6 code?如何将 Karma 与 SlimerJS 集成以测试 ES6 代码?
【发布时间】:2017-01-14 03:31:24
【问题描述】:

我正在尝试将 SlimerJS 与 Karma 集成,以便能够测试 ECMAScript 6 和 AngularJS 代码。

当我直接使用 SlimerJS 测试 ES6 代码时,它会加载我安装的 0.10.2 版本,它适用于我的 ES6 代码。 我安装的 Firefox 版本是 50.1.0,当我直接通过 SlimerJS 调用它时,它可以与 SlimerJS 一起正常工作。我的 SLIMERJSLAUNCHER 变量已按照 SlimerJS 文档的指示正确配置。

但我需要测试 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 版本,而不是调用它似乎带来的那些“嵌入式”版本?

或者有没有更好的方法来集成 Karma 和 SlimerJS 而无需 karma-slimerjs-launcher?

谢谢。

【问题讨论】:

    标签: slimerjs


    【解决方案1】:

    我找到了问题的答案。 无需使用任何浏览器即可正常启动 karma,而不是使用过时版本附带的启动器。

    只需输入:

    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
    

    如果其他人在将 karma 与 slimerjs 集成以测试 ES6 时遇到同样的问题,这就是我的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多