在 Angular 1.5 中将模块注入业力测试
Inject a module into karma test in Angular 1.5
我正在尝试将我的 Angular 应用程序从 1.3.x 升级到 1.5.1。我有一套测试,当我在 Angular 的版本 1.3.x 时,所有 运行 都可以使用 Karma + PhantomJS,但是一旦我升级,我的所有测试都失败了。看来我之前将模块注入单元测试的方式不再有效了。
这在 1.5 中失败了:
'use strict'
App = null
fdescribe 'App Model', ->
beforeEach module('MyAngularApp')
beforeEach inject ($injector)->
App = $injector.get('App')
it 'should exist', ->
console.log 'App:', App
expect(App).toBeDefined()
我也试过用下面的方法注入
beforeEach inject ($injector, _App_)->
App = _App_
但是我的应用程序模型仍然没有被注入。
我一直在研究 AngularJS 1.5.1 的文档,但我没有看到我需要对注入器进行任何更改。
在 Angular 1.5.x 中,如何正确地将模型注入单元测试?
好的,看起来问题实际上是升级导致 angular-mocks
的第二个副本被捆绑到应用程序中。我不确定这是否来自 AngularJS、Karma 或 PhantomJS,但从 karma.conf.js
配置中包含的文件中删除 angular-mock.js
文件解决了这个问题。似乎 PhantomJS 错误日志没有提供足够的洞察力来了解实际问题。
对于遇到此问题的任何其他人,我注意到将我正在测试的浏览器更改为 Chrome(而不是 PhantomJS 2)会导致不同的错误消息:
Error: [$injector:modulerr] Failed to instantiate module ng due to:
Error: [$injector:modulerr] Failed to instantiate module ngLocale due to:
RangeError: Maximum call stack size exceeded
这让我找到了解决方案:https://github.com/angular/angular.js/issues/11303
我正在尝试将我的 Angular 应用程序从 1.3.x 升级到 1.5.1。我有一套测试,当我在 Angular 的版本 1.3.x 时,所有 运行 都可以使用 Karma + PhantomJS,但是一旦我升级,我的所有测试都失败了。看来我之前将模块注入单元测试的方式不再有效了。
这在 1.5 中失败了:
'use strict'
App = null
fdescribe 'App Model', ->
beforeEach module('MyAngularApp')
beforeEach inject ($injector)->
App = $injector.get('App')
it 'should exist', ->
console.log 'App:', App
expect(App).toBeDefined()
我也试过用下面的方法注入
beforeEach inject ($injector, _App_)->
App = _App_
但是我的应用程序模型仍然没有被注入。
我一直在研究 AngularJS 1.5.1 的文档,但我没有看到我需要对注入器进行任何更改。
在 Angular 1.5.x 中,如何正确地将模型注入单元测试?
好的,看起来问题实际上是升级导致 angular-mocks
的第二个副本被捆绑到应用程序中。我不确定这是否来自 AngularJS、Karma 或 PhantomJS,但从 karma.conf.js
配置中包含的文件中删除 angular-mock.js
文件解决了这个问题。似乎 PhantomJS 错误日志没有提供足够的洞察力来了解实际问题。
对于遇到此问题的任何其他人,我注意到将我正在测试的浏览器更改为 Chrome(而不是 PhantomJS 2)会导致不同的错误消息:
Error: [$injector:modulerr] Failed to instantiate module ng due to:
Error: [$injector:modulerr] Failed to instantiate module ngLocale due to:
RangeError: Maximum call stack size exceeded
这让我找到了解决方案:https://github.com/angular/angular.js/issues/11303