如何使用KarmatestingAngularJS / SocketStream / Node.js应用程序

我正在处理由SocketStream / node.js服务器提供的AngularJS应用程序。 我有一个AngularJS服务,在SocketStream服务器上调用API函数,迄今为止进展良好。

但现在是开始编写第一个testing的时候了,所以想到的第一个testing框架是Karma / Jasmine,因为这是推荐的AngularJS。

到目前为止这么好,但是由于我的AngularJS模块是使用'require'(SocketStream的版本, 而不是 require.js)导入的,并且服务器api调用是testing的一部分,我需要configurationKarma来加载SocketStream(至less在客户端) 。

我仔细看了一下' https://github.com/yiwang/angular-phonecat-livescript-socketstream ',但是当我运行这个例子时,我得到了运行时错误,可能是因为我安装了更高版本的变化依赖关系。

我设法通过在app.js中添加'ss.client.packAssets()'来打包我的SocketStream应用程序,并运行'SS_PACK = 1节点app.js'来解决'required'问题,但是当我启动karma时,它会logging一条错误消息他说:

'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需要的代码里面。 也因为我在DEBUG模式下运行业力,可以看到所有的文件被送达。

我一直在尝试不同的方法来找出正在发生的事情,但现在是有效的。 所以我的问题是:

其他人是否使用Karma成功地testing了AngularJS / SocketStream? 有没有人有任何build议,我可以修复,或至lessdebugging这个问题? 有没有其他的解决scheme?

有时间回答,我自己的问题:

因为我得出Karma和node.js / SocketStream有很多重叠的结论,所以我决定看看我能否完全省略Karma,并通过SocketStream交付Jasminetesting平台。 事实certificate,这是可能的,这是我是如何做到的:

我在我的'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')和规格的'脚本'标签,但是让最后的'脚本'在原位阻塞。

然后,我在'client / css / libs'内创build了一个名为'test'的新文件夹,并在那里修改了'jasmine.css'。

然后,我将“jasmine.js”和“jasmine-html.js”复制为'01 -jasmine.js'和'02 -jasmine-html.js',但是未修改为'/ client / code / libs'。

现在,茉莉花已经到位,将通过使用“/testing”路线来调用。 稍微不满意的是,我还没有find一个优雅的地方来存储我的规格文件。 他们只工作到目前为止,如果我把它们放在“库”文件夹。 其他任何地方,它们都由SocketStream作为模块来服务,并且不会运行。

但我现在可以忍受 我可以运行茉莉花testing,而不必configuration一个特殊的Karma设置。