gpt4 book ai didi

AngularJS karma 过滤器未知提供者

转载 作者:行者123 更新时间:2023-12-04 17:00:12 24 4
gpt4 key购买 nike

我不能让它工作!我只是查看了整个互联网,并尝试了其他解决方案,但我无法使其工作。

我有一个过滤器,我想用 Karma 和 Jasmine 进行测试。这是我的代码:

应用程序.js:

var services = angular.module('myApp.services', [ 'ngResource' ]);

angular.module('myApp', [
'ngRoute',
'myApp.filters',
'myApp.services',
'myApp.directives',
'myApp.controllers'
]).

过滤器.js
'use strict';

/* Filters */

angular.module('myApp.filters', [])

.filter(
'lowerAndCapital',
[ function() {
return function(text) {
if (text != undefined) {
var str = text.toLowerCase();
var arreglo = str.split(" ");
var result = "";
for (var i = 0; i < arreglo.length; i++) {
result += " "
+ arreglo[i].charAt(0).toUpperCase()
+ arreglo[i]
.substring(1, arreglo[i].length + 1);
}
return result;
}
}
}]);

filterSpecs.js
'use strict';

/* Jasmine specification for filters go here */

describe('filter', function() {

beforeEach(function () {
module('myApp.filters');
});

describe('lowerAndCapital', function() {
it('deberia de convertir le texto a minuscula y con letra capital',
inject(function(lowerAndCapital) {
expect(lowerAndCapital("john")).toEqual(
"John");
}));
});
});

karma .config.js
module.exports = function(config){
config.set({

basePath : '../',

files : [
'main/webapp/resources/scripts/angular/angular.js',
'main/webapp/resources/scripts/angular/angular-route.js',
'main/webapp/resources/scripts/angular/angular-mocks.js',
'main/webapp/resources/js/*.js',
'test/unit/*.js'
],

autoWatch : true,

frameworks: ['jasmine'],

browsers : ['Chrome'],

plugins : [
'karma-chrome-launcher',
'karma-firefox-launcher',
'karma-jasmine',
'karma-junit-reporter'
],

junitReporter : {
outputFile: 'test_out/unit.xml',
suite: 'unit'
}
});
};

这是错误:
Chrome 36.0.1985 (Windows 7) filter lowerAndCapital deberia de convertir le text
o a minuscula y con letra capital FAILED
Error: [$injector:unpr] Unknown provider: lowerAndCapitalProvider <- low
erAndCapital
http://errors.angularjs.org/1.2.16/$injector/unpr?p0=lowerAndCapitalProv
ider%20%3C-%20lowerAndCapital
at E:/workspace/GPS/src/main/webapp/resources/scripts/angular/angula
r.js:78:12
at E:/workspace/GPS/src/main/webapp/resources/scripts/angular/angula
r.js:3705:19
at Object.getService [as get] (E:/workspace/GPS/src/main/webapp/reso
urces/scripts/angular/angular.js:3832:39)
at E:/workspace/GPS/src/main/webapp/resources/scripts/angular/angula
r.js:3710:45
at getService (E:/workspace/GPS/src/main/webapp/resources/scripts/an
gular/angular.js:3832:39)
at Object.invoke (E:/workspace/GPS/src/main/webapp/resources/scripts
/angular/angular.js:3859:13)
at workFn (E:/workspace/GPS/src/main/webapp/resources/scripts/angula
r/angular-mocks.js:2147:20)
Error: Declaration Location
at window.inject.angular.mock.inject (E:/workspace/GPS/src/main/weba
pp/resources/scripts/angular/angular-mocks.js:2132:25)
at null.<anonymous> (E:/workspace/GPS/src/test/unit/filtersSpec.js:1
5:5)
at null.<anonymous> (E:/workspace/GPS/src/test/unit/filtersSpec.js:1
2:2)
at E:/workspace/GPS/src/test/unit/filtersSpec.js:5:1
Chrome 36.0.1985 (Windows 7): Executed 1 of 1 (1 FAILED) ERROR (0.359 secs / 0.0
14 secs)

最佳答案

您应该尝试注入(inject) filterprovider并获取 lowerAndCapital筛选。

var $filter;

beforeEach(function () {
module('app');
});

beforeEach( inject(function (_$filter_) { //<-- Get the filter provider
$filter = _$filter_;
}));

it('deberia de convertir le texto a minuscula y con letra capital',function(){
expect($filter('lowerAndCapital')("john")).toEqual("John");
});

Plnkr

或使用“过滤器”后缀您的过滤器名称并使用它
beforeEach( inject(function (_lowerAndCapitalFilter_) {
$filter = _lowerAndCapitalFilter_;
}));

Filters are just functions which transform input to an output. However filters need to be Dependency Injected. To achieve this a filter definition consists of a factory function which is annotated with dependencies and is responsible for creating a filter function.



但是由于 split(" "),您的代码中有一个错误。所以你可能想要修剪返回的结果。

Demo

关于AngularJS karma 过滤器未知提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25558765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com