首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grunt-contrib jasmine找不到PhantomJS API?

grunt-contrib jasmine找不到PhantomJS API?
EN

Stack Overflow用户
提问于 2013-07-16 21:19:29
回答 1查看 1.5K关注 0票数 6

PhantomJS应用程序接口声称允许通过标准的commonJS接口访问'fs‘和其他一些内置的require模块。grunt-contrib jasmine声称可以使用phantomJS运行所有规范。但是当我使用grunt-contrib-jasmine时,require方法似乎不可用?

代码语言:javascript
复制
fs = require('fs')
describe 'DesignService',  ->
  it 'test loadFromJSON',  ->
    jsonFile = fs.read("resources/sample_pole.json")

给了我一个错误:

代码语言:javascript
复制
 ReferenceError: Can't find variable: require at
>> target/spec/Spec.js:3 

我做错了什么?

如果不清楚,我从coffeescript编译,然后将grunt-contrib-jasmine指向编译的输出。其他的规格都运行得很好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-23 12:53:24

原因

require方法只在服务器端可用(Nodejs/PhantomJS),但所有的jasmine测试(specs)都在客户端执行。

可能的解决方案

您可以在helpers文件夹中创建一个JavaScript文件,其内容如下:

代码语言:javascript
复制
window.jsonFile = { some : json_object }

并在等级库文件中使用jsonFile参考。

解释

PhantomJS描述中:

PhantomJS是一个带有JavaScript应用编程接口的无头WebKit脚本。

来自grunt-contrib-jasmine描述:

通过PhantomJS无意识地运行jasmine规范。

grunt-contrib-jasmine会自动创建包含所有用户规格的_SpecRunner.html文件(例如,见下文),并将其传递给PhantomJS。PhantomJS是一个单独的可执行文件,它在Nodejs中只被包装为一个包。这是与从Phantomjs.org页面下载的相同的可执行文件。

最后,执行以下代码行:.\node_modules\grunt-contrib-jasmine\node_modules\grunt-lib-phantomjs\node_modules\phantomjs\lib\phantom\phantomjs .\node_modules\grunt-contrib-jasmine\node_modules\grunt-lib-phantomjs\phantomjs\main.js .\_SpecRunner.html。在这里,main.js文件用于打开页面并绑定抛出到grunt日志记录的警报(alert(jsonString))。

因此,在** _SpecRunner.html 和PhantomJS规范文件中没有提供和jasmine规范文件。

结果与用浏览器打开_SpecRunner.html是一样的,只是所有的消息都会被jasmine reporter截获并显示在屏幕上。

代码语言:javascript
复制
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Jasmine Spec Runner</title>

  <link rel="stylesheet" type="text/css" href=".grunt/grunt-contrib-jasmine/jasmine.css">

  <!-- Jasmine test suite -->
  <script src="./.grunt/grunt-contrib-jasmine/jasmine.js"></script>
  <script src="./.grunt/grunt-contrib-jasmine/jasmine-html.js"></script>

  <!-- Some vendor libraries -->
  <script src="./test/vendor/jquery.js"></script>

  <!-- Some helpers -->
  <script src="./test/helpers/ts.js"></script>

  <!-- Your spec files -->
  <script src="./test/main_spec.js"></script>

  <!-- Jasmine reporter that displays the result-->    
  <script src="./.grunt/grunt-contrib-jasmine/reporter.js"></script>  
  <script src="./.grunt/grunt-contrib-jasmine/jasmine-helper.js"></script>
</head>
<body>
</body>
</html>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17677654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档