gpt4 book ai didi

javascript - isolateScope() 给出未定义的 - 使用 Karma 的单元测试指令

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:42:13 26 4
gpt4 key购买 nike

如问题标题所述,我在调用 isolateScope() 时变得不确定.我尝试根据 Unit Testing AngularJS Directives With External Templates 上给出的说明对我的 Angular 指令进行单元测试.

这是我的代码:

directive.js

angular.module("myTestApp")
.directive("testDirective", function(){
return{
restrict: "E",
require: "ngModel",
scope:{
ngModel: "=",
label: "@?"
},
templateUrl: "/mypath/templates/testDirective.html",
link: function($scope, element, attributes, ngModelCtrl){
$scope.functions = {},
$scope.settings = {
label: $scope.label ? $scope.label : ""
}
}
};
});

我用过karma-ng-html2js-preprocessor对于 templateUrl。

karma.conf.js(代码仅包含与 ng-html2js 相关的部分)

files:[
//All Js files concerning directives are also included here...
'/mypath/templates/*.html'
],

preprocessors: {
'/mypath/templates/*.html': [ng-html2js']
},

ngHtml2JsPreprocessor: {
moduleName: 'template'
},

plugins: ['karma-*'],

directiveSpec.js

describe("testDirective Test", function(){
var scope, $compile,$httpBackend, template;

beforeEach(module('myTestApp'));
beforeEach(module('template'));

beforeEach(inject(function($rootScope, _$compile_, _$httpBackend_){
scope = $rootScope.$new();
$compile = _$compile_;
$httpBackend = _$httpBackend_;
}));

it("should check if the value of label attribute id set to dummyLabel", function(){
$httpBackend.expect('GET','/mypath/templates/testDirective.html').respond();
scope.label = 'dummyLabel';
var element = angular.element('<test-directive label= "label" ></test-directive>');

element = $compile(element)(scope);
console.log(element);
scope.$digest();
console.log('Isolate scope: '+ element.isolateScope());
expect(element.isolateScope().label).toEqual('dummyLabel');
});

});

这里是 console.log(element);版画 {0: <test-directive label="label" class="ng-scope"></test-directive>, length: 1}

问题: console.log('Isolate scope: '+ element.isolateScope());给出 undefined .

我在 StackOverflow 的许多问题上查看了这个问题,但未能找到正确的解决方案。

此外,我必须使用 $httpBackend获取 html 文件,否则它会抛出 Unexpected Request错误。

我将非常感谢任何帮助,因为自从过去一周以来我一直陷入这个错误!

最佳答案

乍一看只是猜测,但是......

您的 .respond() 需要返回一些东西。现在您正在拦截对您的模板的请求并且不响应任何内容,因此导致空数据和 isolateScope() 未定义。

关于javascript - isolateScope() 给出未定义的 - 使用 Karma 的单元测试指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34396530/

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