Javascript AngularJS指令测试未知提供程序:translateFilterProvider 嗨,伙计们

Javascript AngularJS指令测试未知提供程序:translateFilterProvider 嗨,伙计们,javascript,angularjs,unit-testing,angularjs-directive,Javascript,Angularjs,Unit Testing,Angularjs Directive,首先,很抱歉为这个问题提出了一个新问题,但我是这个网站的新手,我还不能发表评论。尽管我在这个网站上发现了一些问题,给出了我可以使用的答案,但我遇到了另一个问题 我正在测试一个具有翻译功能的应用程序,它给了我一个错误: 未知提供者:translateFilterProvider经过几个小时的绝望,我终于找到了一个解决方案: beforeEach(function() { module(['$provide', function($provide) { $provide.v

首先,很抱歉为这个问题提出了一个新问题,但我是这个网站的新手,我还不能发表评论。尽管我在这个网站上发现了一些问题,给出了我可以使用的答案,但我遇到了另一个问题


我正在测试一个具有翻译功能的应用程序,它给了我一个错误:


未知提供者:translateFilterProvider经过几个小时的绝望,我终于找到了一个解决方案:

beforeEach(function() {
    module(['$provide', function($provide) {
        $provide.value('translateFilter', [function(value) {
            return value;
        }][0]
        );
    }]);
});
问题是,
eslint
需要DI的数组语法,但是实际的函数没有正确执行,它总是给我一个
。。。不是一个函数
错误。因此,在工作解决方案中,我将函数放入一个数组中,在我使用
[0]
将其取出之后,每个人都很高兴

<div id="{{ vm.cfCardId }}" class="cf-toplist-card col-xs-12 col-md-12 col-lg-12">
    <div class="toplist row">
        <!--{{vm.cfColor}} should be used for border color!!! -->
        <div class="col-xs-6 col-md-2 col-lg-2 toplist-col1" style="border-left-color: {{vm.cfColor}}">
            <h1>{{vm.cfRank}}</h1>
        </div>
        <div class="col-xs-6 col-md-2 col-lg-2 toplist-col2">
            <div class="toplist-picture-block">
                <i class="toplist-picture-bg toplist-picture-radius"></i>
                <img alt=" " class="toplist-picture toplist-picture-radius" ng-src="{{ $root.backendBaseURL + vm.cfPicUrl + vm.cfId}} "/>
            </div>
        </div>
        <div class="col-xs-6 col-sm-6 col-md-4 col-lg-4 toplist-data">
            <div class="toplist-name toplist-value">
                {{vm.cfName}}
            </div>
            <div class="toplist-desc">
                {{ 'common.target' | translate }}
            </div>
            <div class="toplist-value">
                {{ vm.cfTargetValue | cfNumberFormat }}
            </div>
        </div> 
        <div class="col-xs-6 col-sm-6 col-md-4 col-lg-4 toplist-data toplist-float-right-td">
            <div class="toplist-desc">
                {{vm.cfCurrentValueDesc}}
            </div>
            <div class="toplist-value highlight">
                {{ vm.cfCurrentValue | cfNumberFormat }}
            </div>
            <div class="toplist-desc">
                {{ 'common.change' | translate }}
            </div>
            <div class="toplist-value">
                {{ vm.cfChange | cfNumberFormat }}
            </div>
        </div> 
    </div>
</div>     
describe("test.spec.presentation.directives.toplistcard.cf-toplist-card", function () {

    var toplistController;
    var element;
    var $scope;
    var http;
    var template1;
    var url1 = "src/presentation/directives/toplistcard/cf-toplist-card.html";
    var $timeout;
    var $compile;
    var cache;
    
    beforeEach(module("cfPresentation.directives"));
    beforeEach(angular.mock.module("cfPresentation.services"));
    beforeEach(angular.mock.module("cfPresentation.filters"));
    beforeEach(angular.mock.module('ui.router'));
    var mockTranslateFilter;

    beforeEach(function() {
        module(function($provide) {
            $provide.value('translateFilter', mockTranslateFilter);
        });

        mockTranslateFilter = function(value) {
            return value;
        };
    });
    beforeEach(module('templates'));

    beforeEach(angular.mock.inject(['$timeout','$injector', '$compile', '$rootScope',  '$templateCache', function(_$timeout_, $injector,_$compile_, $rootScope, $templateCache) {
        $scope = $rootScope;
        $timeout = _$timeout_;
        http = $injector.get('$httpBackend');
        $compile = _$compile_;
        cache = $templateCache;
        
        element = $compile("<cf-toplist-card></cf-toplist-card>")($scope);
        
        template1 = cache.get('app/src/presentation/directives/toplistcard/cf-toplist-card.html');
        
        http.when('GET', url1).respond(template1);
        
        http.flush(); 

        $scope.$apply();
    }]));

    describe('CFToplistCardController', function() {
        beforeEach(function() {
            toplistController = element.find('.cf-toplist-card').controller('cfToplistCard');
        });
        
        it('should be defined', function() {
            expect(toplistController).toBeDefined();
        });
        
        it('should destroy on scope destroy', function() {
            expect(toplistController.element).toBeDefined();
            var isolateScope = element.find('.cf-toplist-card').scope();
            isolateScope.$destroy();
            expect(toplistController.element).not.toBeDefined();
        });
    });
});
var mockTranslateFilter;

    beforeEach(function() {
        module(function($provide) {
            $provide.value('translateFilter', mockTranslateFilter);
        });

        mockTranslateFilter = function(value) {
            return value;
        };
    });
beforeEach(function() {
    module(['$provide', function($provide) {
        $provide.value('translateFilter', [function(value) {
            return value;
        }][0]
        );
    }]);
});