gpt4 book ai didi

javascript - 在 Angular 单元测试指令中注入(inject)过滤器

转载 作者:行者123 更新时间:2023-11-28 07:35:56 25 4
gpt4 key购买 nike

这可能很简单,但我在任何地方都找不到任何解决方案。现在我有一个使用过滤函数的指令。一切正常,但我正在尝试为其创建一个单元测试,它给了我

Error: [$injector:unpr] Unknown provider: inArrayFilterProvider <- inArrayFilter

这是我的指令

var directiveApp = angular.module('myApp.directives',[]);
directiveApp.directive('navbar', function($filter) {

return {
templateUrl: 'partials/navbar.html',

controller: function($scope, $location) {

$scope.checkLocation = function(){
return $location.path();
};
$scope.isActive = function (viewLocation) {

var locations = viewLocation.split(',');
//return viewLocation === $location.path();
var path = '/' + $location.path().split('/')[1];
//return $filter('inArray')(locations, $location.path());
return $filter('inArray')(locations, path);
};
}
};
});

这是我的单元测试

'使用严格';

describe('myApp.directives module', function() {

beforeEach(module('myApp.directives'));

describe('navbar directive', function() {
var $scope,controller,template;
beforeEach(inject(function($rootScope,$compile,$location,$filter,$templateCache){
$scope = $rootScope.$new();

$templateCache.put('partials/navbar.html','I am here');
spyOn($location,'path').andReturn("/festivals");
var element = angular.element('<div data-navbar=""></div>');
template = $compile(element)($scope);
controller = element.controller;
$scope.$digest();
}));
it('Check Festival nav', function()
{
expect($scope.isActive('/festivals')).toBeTruthy();
});
});
});

我认为当使用 inArray 调用它时我必须进行 spy 过滤并返回模拟值,但不太确定如何做到这一点。谢谢

最佳答案

已修复。我必须包含具有 inArray 函数的主模块

describe('myApp.directives module', function() {
var $filter;
beforeEach(module('myApp'),function(_$filter_){
$filter = _$filter_;
});
.../*Rest as Before*/
...
...});

关于javascript - 在 Angular 单元测试指令中注入(inject)过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592578/

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