Javascript 有棱角的模仿和茉莉花;参数';fn';不是一个函数,get Object“;错误

Javascript 有棱角的模仿和茉莉花;参数';fn';不是一个函数,get Object“;错误,javascript,angularjs,unit-testing,coffeescript,jasmine,Javascript,Angularjs,Unit Testing,Coffeescript,Jasmine,我对使用Angular(带有Angular Mock)、Jasmine和CoffeeScript进行单元测试有一个问题 具体而言,此代码将中断: 'use strict' describe 'sample suite', -> beforeEach inject(($rootScope, $compile) -> scope = $rootScope.$new() ) it 'should be true', ->

我对使用Angular(带有Angular Mock)、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错误:[ng:areq]参数“fn”不是函数,Get Object
错误

但是,这确实有效:

'use strict'

describe 'sample suite', ->

    beforeEach ->
        sample = 'test'

    it 'should be true', ->
        expect('foo').toBe('foo')
这意味着将语法与全局
inject()
angularmocks方法一起使用无法正确地与CoffeeScript编译器配合使用

遗憾的是,在每个块之前用
return
结束
都不起作用


感谢您的帮助。

如果您看到两个代码工作和不工作,您会注意到很大的区别

在第一个块中,
beforeach
接受
inject
作为参数,同时将匿名函数
beforeach->
作为参数传递 这就是为什么会出现错误
error:[ng:areq]参数'fn'不是一个函数,get对象

'use strict'

describe 'sample suite', ->

  beforeEach ->
    inject ($rootScope, $compile) ->
      scope = $rootScope.$new()


  it 'should be true', ->
    expect('foo').toBe('foo')

请检查以下问题。@TomePejoski您的意思是不使用通配符吗?没有帮助,我想问题在因果报应和茉莉花适配器之间。您的测试代码显然与您发布的代码不同。请提供。这很可能是由于Angular应用程序中的错误造成的(不正确的
config
block等等)。是的,有区别,不,
inject
接受这两种用法,这不是问题所在。我不是说
inject
,我说的是
beforeach
,它需要函数,您可以使用object(inject)执行它
inject()
返回一个可以(beforeach或它)调用的包装函数。这是预期的行为。看右边,我的坏,除了从我的头顶我可以想到坏的依赖注入,即
.factory('myFactory','injection',function(injection){})
而不是数组符号
.factory('myFactory',['injection',function(injection){}])