[英]Mocking ngModel in unit tests
我正在尝试为使用链接函数的指令编写单元测试,并且没有与之关联的任何模板。 该指令需要像这样的ngModel
:
angular.module('some-module', []).directive('someDirective', function() {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, controller) {
//Do something
}
};
});
在尝试对此进行单元测试时,我只是尝试编译DIV来触发指令:
var $scope = $rootScope.$new();
var element = $compile('<div some-directive></div>')($scope);
$scope.$digest();
但是这会触发无法找到ngModel
控制器的错误。 在查看ngModel和ngModelController的文档后,我尝试使用$provide
服务ngModel
,如下所示:
beforeEach(module(function($provide) {
var mockNgModel = {};
$provide.value('ngModel', mockNgModel); //Doesn't work
$provide.value('ngModelCtrl', mockNgModel); //Doesn't work
$provide.value('ngModel.NgModelController', mockNgModel); //Doesn't work
$provide.value('ngModel.ngModelController', mockNgModel); //Doesn't work
}));
我还看到其他解决方案,讨论在范围上创建属性,其中包含在使用指令的HTML中绑定的任何ngModel
(例如, solution1 , solution2 ),但这并没有解决我的情况中的错误。
var $scope = $rootScope.$new();
$scope.foo = 'bar';
var element = $compile('<div some-directive ng-model="foo"></div>')($scope);
$scope.$digest();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.