Angularjs/Karma:未捕获引用错误:未定义注入
我得到了这个服务Angularjs/Karma:未捕获引用错误:未定义注入,angularjs,jasmine,karma-runner,Angularjs,Jasmine,Karma Runner,我得到了这个服务 angular.module('common.utils', []) .service('Timer', function () { function Timer() { var start = new Date(); return function () { return (new Date()).getTime() - start.getTime(); }; } return T
angular.module('common.utils', [])
.service('Timer', function () {
function Timer() {
var start = new Date();
return function () {
return (new Date()).getTime() - start.getTime();
};
}
return Timer;
});
我正试图为它编写一个简单的测试:
describe('common.utils', function() {
beforeEach(function () {
module('common.utils');
});
it('has a timer service', inject(function(Timer) {
expect(Timer).not.toBeNull();
}));
});
我不断得到ReferenceError:inject未定义
我包括了
angular.js
,angular mocks.js
和所有的应用程序文件(module
正在工作…)。我不明白问题是什么 我也有同样的问题
原来问题出在文件的加载顺序上。在加载角度模拟之前,必须加载jasmine
以下加载顺序将抛出问题中提到的错误:
<script src="/bower_components/angular/angular.js"></script>
<script src="/bower_components/angular-mocks/angular-mocks.js"></script>
<script src="/bower_components/jasmine/lib/jasmine-core/jasmine.js"></script>
<script src="/bower_components/jasmine/lib/jasmine-core/jasmine-html.js"></script>
<script src="/bower_components/jasmine/lib/jasmine-core/boot.js"></script>
<!-- include spec files here... -->
<script src="/spec/test.js"></script>
ReferenceError:未定义注入
在几个jasmine示例中,代码中包含了一条附加注释:
<!-- include source files here... -->
这条评论帮助我们提醒我们按正确的顺序装载物品
<script src="/bower_components/jasmine/lib/jasmine-core/jasmine.js"></script>
<script src="/bower_components/jasmine/lib/jasmine-core/jasmine-html.js"></script>
<script src="/bower_components/jasmine/lib/jasmine-core/boot.js"></script>
<!-- include source files here... -->
<script src="/bower_components/angular/angular.js"></script>
<script src="/bower_components/angular-mocks/angular-mocks.js"></script>
<!-- include spec files here... -->
<script src="/spec/test.js"></script>
仔细检查是否包含角模拟!如果是,那么注入函数应该在窗口对象中可用。确实如此,我在调试中运行只是为了确保-看到了吗?您可以共享您的karma conf文件吗?它是由karma init
生成的标准文件。无论如何,这些文件都是由一个gulp任务指定的。。。我无法确定inject
在哪里可用。似乎我只能在每次之前的中使用它。检查您是否在karma conf对象的文件字段中包含angular.mock.js。您可以在“it”中使用注入函数(很明显,因为它在窗口中可用),我已经在测试中完成了。