Angular Mocks和Jasmine - “Argument'fn'不是函数,得到了Object”错误

时间:2016-11-16 07:59:14

标签: javascript angularjs unit-testing coffeescript jasmine

我使用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阻止无效。

任何帮助表示感谢。

1 个答案:

答案 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')