我使用Angular(使用Angular-Mocks),Jasmine和CoffeeScript进行单元测试存在问题。
具体来说,此代码中断了:
'use strict'
describe 'sample suite', ->
beforeEach inject(($rootScope, $compile) ->
scope = $rootScope.$new()
)
it 'should be true', ->
expect('foo').toBe('foo')
导致Angular debug.html:37 Error: [ng:areq] Argument 'fn' is not a function, got Object
错误。
然而,这确实有效:
'use strict'
describe 'sample suite', ->
beforeEach ->
sample = 'test'
it 'should be true', ->
expect('foo').toBe('foo')
这意味着使用带有全局inject()
angular-mocks方法的语法无法正确使用CoffeeScript编译器。
令人遗憾的是,使用beforeEach
结束return
阻止无效。
任何帮助表示感谢。
答案 0 :(得分:0)
如果你看两个代码正常工作而不工作,你会发现差异很大
在第一个块中beforeEach
接受inject
作为参数,在工作中,您将匿名函数beforeEach ->
作为参数传递
这就是您收到错误Error: [ng:areq] Argument 'fn' is not a function, got Object
'use strict'
describe 'sample suite', ->
beforeEach ->
inject ($rootScope, $compile) ->
scope = $rootScope.$new()
it 'should be true', ->
expect('foo').toBe('foo')