作为练习,我正在尝试转换包含在angular-seed
从 js 回购到咖啡脚本。特别是,我遇到了问题tests/unit/directivesSpec.js
测试集,定义了一个简单的价值服务。这是我的咖啡脚本代码:
1 describe 'directives', ->
2 beforeEach module 'myApp.directives'
3
4 describe 'app-version', ->
5 it 'should print current version', ->
6 module ($provide) ->
7 $provide.value 'version', 'TEST_VER'
8 inject ($compile, $rootScope) ->
9 element = $compile('<span app-version></span>')($rootScope)
10 expect(element.text()).toEqual 'TEST_VER'
咖啡脚本代码围绕行编译时似乎有问题6
因为这变成:
module(function($provide) {
return $provide.value('version', 'TEST_VER');
});
并导致我的测试失败并出现错误:
Error: [ng:areq] Argument 'fn' is not a function, got Object
http://errors.angularjs.org/1.2.4/ng/areq?p0=fn&p1=not%20a%20function%2C%20got%20Object
at /Data/src/ngfrontend-seed/app/vendor/angular/angular.js:78:12
at assertArg (/Data/src/ngfrontend-seed/app/vendor/angular/angular.js:1358:11)
at assertArgFn (/Data/src/ngfrontend-seed/app/vendor/angular/angular.js:1368:3)
如果我删除return
声明,测试运行良好。参考文档中的示例 http://docs.angularjs.org/api/angular.mock.inject,目前还不清楚模块函数接受什么作为返回值,但是return
声明似乎打破了事情。
关于如何解决这个问题的任何想法,或者在编写测试规范时坚持使用纯 JavaScript 是否明智?