【问题标题】:jasmine unit tests not executed in phantomjs script茉莉花单元测试未在 phantomjs 脚本中执行
【发布时间】:2013-04-23 09:21:18
【问题描述】:

我编写了一个小脚本,它从磁盘加载我的 SpecRunner.html(jasmine 单元测试)。 尽管一切看起来都很好,但测试并未执行。 这是我的代码:

var page = require('webpage').create()
    , file = "./SpecRunnerCoverage.html" ;

page.open(file, function (status) {
    var json = page.evaluate(function () {
        return window._yuitest_coverage;
    });

    console.log(JSON.stringify(json));
    phantom.exit();
});

执行如下:

$> phantomjs myScript

从代码覆盖率数据我可以看出没有执行任何测试。无论如何我可以执行这些测试吗?

非常感谢

更新:我刚刚注意到,当我在评估函数周围包裹一个 setTimeout 并延迟整个过程时,它可以工作。有没有比 setTimeout 更好的解决方案?

【问题讨论】:

    标签: unit-testing jasmine phantomjs


    【解决方案1】:

    jasmine 启动过程在调用 window.onload 时开始运行测试,因此在调用幻像页面加载回调时您的规范不一定已经完成。通过使用setTimeout,您可以在页面加载后留出时间在浏览器中运行测试。 setTimeout 仍然很脆弱,因为随着您添加更多规范,运行完整套件所需的时间会发生变化,并且您当前的超时持续时间可能不足以让套件完成。

    如果你的项目可以有 ruby​​ 依赖,你可以使用jasmine ruby gem。 gem 包含一个 rake 任务rake jasmine:ci,它将使用您的测试启动服务器,并使用 phantom 加载页面并等待所有规范完成并将失败打印到命令行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2022-01-23
      • 2020-11-25
      • 2018-07-17
      • 2020-08-19
      • 2015-10-01
      相关资源
      最近更新 更多