我目前正忙于测试Angular的茉莉花单元。 我把这个单元测试放在test.js
中describe('The countInput filter', function(){
var $filter;
beforeEach(function(){
module('countInputFilter');
inject(function(_$filter_){
$filter = _$filter_;
});
});
it('Should not give an output when the length of the input is > 3', function(){
var input = 'test';
result = $filter('countInputFilter')(input);
expect(result).toBe(null);
});
});
当我用karma启动karma.conf.js时,我得到错误:模块未定义。
在我的karma.conf.js文件中,我有以下文件代码:
files: [
'../bower_components/angular/angular.js',
'../bower_components/angular-mocks.js',
'../bower_components/angular-route/angular-route.js',
'../scripts/**/*.js',
'../scripts/filters.js',
'spec/**/*.js',
'spec/*.js'
],
我的项目结构是:
scripts
--filters.js
test
--spec
----test.js
--karma.conf.js
第一次尝试用Jasmine进行单元测试,但我没有看到错误。
26 03 2017 11:29:10.103:WARN [观察者]:模式“C:/Users/user/Desktop/angular/bower_components/angular-mocks.js”与任何文件都不匹配。 26 03 2017 11:29:10.134:警告[业力]:没有捕获的浏览器,打开http://localhost:9876/ 26 03 2017 11:29:10.150:INFO [业力]:Karma v1.5.0服务器始于http://0.0.0.0:9876/ 26 03 2017 11:29:10.150:INFO [launcher]:启动浏览器Chrome,具有无限的并发性 26 03 2017 11:29:10.181:INFO [启动器]:启动浏览器Chrome
答案 0 :(得分:1)
检查模块名称。
模块名称和过滤器名称不能相同。
即
module('countInputFilter');
和
result = $filter('countInputFilter')(input);
如果filter.js
中的模块名称为countInput
且filtername为countInputFilter
尝试以下代码:
describe('The countInput filter', function(){
var $filter;
beforeEach(function(){
module('countInput');
inject(function(_$filter_){
$filter = _$filter_;
});
});
it('Should not give an output when the length of the input is > 3', function(){
var input = 'test';
result = $filter('countInputFilter')(input);
expect(result).toBe(null);
});
});
此外,您filter.js
应如下所示:
angular.module('countInput', [])
.filter('countInputFilter', function () {
return function (x) {
...
};
});
您还可以分享filter.js
代码。