我正在开发一个由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”,但是当我运行这个示例时,我得到了运行时错误,可能是因为我安装了各种依赖关系的更高版本。
通过将“ss.client.packassets()”添加到app.js并运行“ss_pack=1 node app.js”,我设法通过打包socketstream应用程序来解决“Required”,但当我启动Karma时,它会记录一条错误消息,说:

'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?
有人对我如何解决或至少调试这个问题有什么建议吗?
有没有其他的选择/更好的解决方案?

最佳答案

是时候回答我自己的问题了:
有点,因为我得出的结论是karma和node.js/socketstream有很多重叠,所以我决定看看是否可以完全忽略karma,通过socketstream交付jasmine测试平台。事实证明这是可能的,我是这样做的:
我在“app.js”文件中定义了一个新的socketstream路由和客户端:

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' );
});

我下载了jasmine-standalone-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”)和规范的“script”标记,但让最后一个“script”块原地不动。
然后我在“client/css/libs”中创建了一个名为“test”的新文件夹,并在其中未经修改地复制了“jasmine.css”。
然后,我将“jasmine.js”和“jasmine html.js”复制到“/client/code/libs”,它们重命名为“01 jasmine.js”和“02 jasmine html.js”,但未经修改。
现在jasmine已经就位,将通过使用'/test'路径调用它。有点不满意的是,我没有找到一个优雅的地方来存储我的规范文件。只有当我把它们放在“libs”文件夹中时,它们才会起作用。在其他任何地方,它们由socketstream作为模块提供服务,不运行。
但我现在可以忍受。我可以运行jasmine测试,而不必配置特殊的业力设置。

09-25 18:42