javascript - 在没有服务器的情况下在 Phantom.js 中运行 Jasmine 测试套件

标签 javascript jasmine phantomjs

我正在尝试让 Phantom.js 运行一套用 Jasmine 编写的 JavaScript 测试。以下是重现我正在做的事情的步骤:

  • 获取 latest standalone release最新版本的 Jasmine 框架(一个 zip 存档)

  • 存档包含几个 javascript 文件的示例规范和可以在浏览器中运行这些规范的 SpecRunner.html 文件

  • 安装 phantom.js 并下载 jasmine 2 runner来自 phantom.js 项目的示例文件夹

  • 尝试使用 phantom.js 运行 SpecRunner.html:

    phantomjs ./phantom/run-jasmine2.js ./jasmine/SpecRunner.html

(其中 ./phantom/run-jasmine2.js 是 phantom.js 的 jasmine2 runner 的路径,./jasmine/SpecRunner.html是 jasmine 文件夹中带有示例规范的规范运行程序的路径)

我收到以下错误

TypeError: null is not an object (evaluating 'document.body.querySelector('.description').innerText')

Blocked a frame with origin "file://" from accessing a frame with origin "null".  The frame requesting access has a protocol of "file", the frame being accessed has a protocol of "about". Protocols must match.

因此 Phantom 似乎不高兴直接将规范运行器作为磁盘文件提供给它,而不是作为本地服务器提供的文件 (localhost:8080/SpecRunner.html).你能建议一种方法让 Phantom 在不启动服务器的情况下使用 spec runner 文件吗?如果可能的话,也没有业力。

最佳答案

这里有一个很好的例子 Karma, PhantomJS, Jasmine setup您可以使用更多关于 Karma 的文档,请访问 https://karma-runner.github.io .

关于javascript - 在没有服务器的情况下在 Phantom.js 中运行 Jasmine 测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36948871/

相关文章:

javascript - 将属性添加到同一索引处数组中索引处的对象

javascript - 一次选中一个复选框 - 不是单选按钮

javascript - Jasmine:如何测试 GET 请求中是否调用了正确的 URL

使用 Jasmine 进行 Angular 单元测试 - 错误 : Please add an @NgModule annotation

python - 如何在 Selenium 中使用命令行选项启动 PhantomJS?

javascript - 有没有办法直观地查看 PhantomJS 在浏览器上渲染的内容

java - PhantomJS 驱动程序无法启动

javascript - 如何防止 IO 中的背景滚动?

javascript - Angularjs 在 :hover 上覆盖 ng-show ng-hide

javascript - Jasmine + karma : 'expect' was used when there was no current spec error, 但为什么呢?