我正在开发一个由SocketStream/node.js服务器交付的AngularJS应用程序。我有一个AngularJS服务,它在SocketStream服务器上调用api函数,到目前为止进展良好。
但是现在是开始编写第一个测试的时候了,出现在脑海中的第一个测试框架是Karma/Jasmine,因为这是推荐的AngularJS设置。
到目前为止还不错,但是由于我的AngularJS模块是使用“require”( SocketStream的版本,而不是require.js)导入的,而服务器api调用是测试的一部分,所以我需要配置Karma来加载SocketStream(至少是它的客户端)。
我仔细地看了一下'https://github.com/yiwang/angular-phonecat-livescript-socketstream‘,但是当我运行这个示例时会出现运行时错误,这可能是因为我安装了新版本的各种依赖项。
通过在SocketStream应用程序中添加“ss.client.packAssets()”并运行“SS_PACK=1节点app.js”,我成功地解决了“所需”问题,但当我启动“业力”时,它会记录一条错误消息:
'Chrome 23.0 (Linux) ERROR
Uncaught TypeError: undefined is not a function
at /the...path/client/static/assets/app/1368026081351.js:25''1368026081351.js‘是SocketStream打包的资产文件。如果我不加载它,错误消息会类似于'require is undefined',所以我最好的猜测是,错误发生在SocketStream require代码中的某个地方。也是因为我在调试模式下运行业力,并且可以看到所有正在服务的文件。
我一直在尝试不同的方法来找出正在发生的事情,但现在起作用了。所以我的问题是:
是否还有其他人成功地使用Karma测试AngularJS/SocketStream?有人对我如何修复,或者至少调试这个问题有什么建议吗?有没有其他办法/更好的解决办法?
发布于 2013-05-10 21:21:29
是时候回答我自己的问题了:
某种程度上,因为我得出的结论是,Karma和node.js/SocketStream有很多重叠,所以我决定看看是否可以完全省略Karma,并通过SocketStream交付茉莉花测试平台。事实证明,这是可能的,这就是我是如何做到的:
我在‘SocketStream’文件中定义了一个新的app.js路由和客户机:
ss.client.define( 'test', {
view: 'SpecRunner.html',
css: ['libs/test'],
code: ['libs', 'tests', 'app'],
tmpl: 'none'
});
ss.http.route( '/test', function(req, res) {
res.serveClient( 'test' );
});我下载了茉莉花-独立-1.3.1.zip,并将'SpecRunner.html‘复制到'client/views’文件夹。然后,我编辑了它,使其加载AngularJS和所有SocketStream客户端文件,就像所有其他视图一样:
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular-resource.min.js"></script>
<SocketStream/>我删除了导入示例源文件(“Player.js”和“Song.js”)和规范的“脚本”标记,但让最后一个“脚本”块不受修改。
然后,我在'client/css/libs‘中创建了一个名为'test’的新文件夹,并未经修改就在其中复制了'jasmine.css‘。
然后,我将'jasmine.js‘和’jasmin-html.js‘重命名为'01-jasmine.js’和‘02-jasmin-html.js’,但没有修改,而是复制到'/client/code/libs‘中。
现在Jasmine已经就位,并将使用'/test‘路由来调用。稍微令人不满意的一点是,我没有找到一个优雅的地方来存储我的规范文件。只有当我把它们放在'libs‘文件夹中时,它们才能工作。在其他任何地方,它们都是由SocketStream作为模块提供的,并且不运行。
但我现在还能忍受。我可以运行茉莉花测试,而不必配置一个特殊的Karma设置。
https://stackoverflow.com/questions/16445963
复制相似问题