Javascript 有棱角的模仿和茉莉花;参数';fn';不是一个函数,get Object“;错误
我对使用Angular(带有Angular Mock)、Jasmine和CoffeeScript进行单元测试有一个问题 具体而言,此代码将中断: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', ->
'use strict'
describe 'sample suite', ->
beforeEach inject(($rootScope, $compile) ->
scope = $rootScope.$new()
)
it 'should be true', ->
expect('foo').toBe('foo')
导致Angulardebug.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){}])