gpt4 book ai didi

javascript - 在单元测试中模拟 ngModel

转载 作者:行者123 更新时间:2023-11-29 10:41:11 24 4
gpt4 key购买 nike

我正在尝试为使用链接函数但没有任何关联模板的指令编写单元测试。该指令需要这样的 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 Controller 的错误。在查看了 ngModelngModelController 的文档后,我尝试使用 $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
}));

我还看到其他解决方案讨论在范围内创建一个属性,该范围包含 ngModel 在使用指令的 HTML 中绑定(bind)到的任何内容(例如 solution1solution2 )但是这个没有解决我的错误。

最佳答案

var $scope = $rootScope.$new();
$scope.foo = 'bar';
var element = $compile('<div some-directive ng-model="foo"></div>')($scope);
$scope.$digest();

关于javascript - 在单元测试中模拟 ngModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28840114/

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