Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS–;如何在Jasmine中为enter-events指令编写单元测试_Javascript_Angularjs_Unit Testing_Jasmine_Angular Directive - Fatal编程技术网

Javascript AngularJS–;如何在Jasmine中为enter-events指令编写单元测试

Javascript AngularJS–;如何在Jasmine中为enter-events指令编写单元测试,javascript,angularjs,unit-testing,jasmine,angular-directive,Javascript,Angularjs,Unit Testing,Jasmine,Angular Directive,我已经在AngularJS中创建了enter-event指令,因此我想为该指令运行测试用例。但我不知道如何为enter事件编写代码 describe('Unit Test: Enter Event', function() { var elm, compile, scope; beforeEach(function() { module('att.sandbox.attEnterEvent'); inject(function($compile, $rootScope)

我已经在AngularJS中创建了enter-event指令,因此我想为该指令运行测试用例。但我不知道如何为enter事件编写代码

describe('Unit Test: Enter Event', function() {
var elm, compile, scope;    

beforeEach(function() {
    module('att.sandbox.attEnterEvent');
    inject(function($compile, $rootScope) {
        compile = $compile;
        scope = $rootScope.$new();
    });
});

/*scenarion 1*/
it("Enetr Key should call the method inside controller", function() {
    elm = angular.element('<input type="text" att-enter-event="enterEvent()">');
    elm = compile(elm)(scope);
    scope.$digest();
    scope.enterEvent = jasmine.createSpy();

     //**Here i want to add enter event test case** 

     expect().toHaveBeenCalled();
});
})
description('单元测试:输入事件',函数(){
var-elm,compile,scope;
beforeach(函数(){
模块('att.sandbox.attEnterEvent');
注入(函数($compile,$rootScope){
compile=$compile;
scope=$rootScope.$new();
});
});
/*情景1*/
它(“ENTER键应该调用控制器内部的方法”,函数(){
elm=角度元素(“”);
elm=编译(elm)(范围);
范围。$digest();
scope.enterEvent=jasmine.createSpy();
//**在这里我想添加enter事件测试用例**
expect().tohavebeincalled();
});
})

最重要的事情是:

  • 创建事件对象
  • 修改指令
  • 写测试
并在元素上触发它
/--implementation-----------------
角度模块('att.sandbox.attEnterEvent',[])
.directive('hitEnterEvent',function(){
返回{
限制:“A”,
范围:{
hitEnterEvent:“&”
},
链接:函数(范围、元素、属性){
元素绑定(“按键按下”,函数(事件){
if(event.which==13 | | event.keyCode==13){
作用域$apply(函数(){
scope.hitEnterEvent()
});
event.preventDefault();
}
});
}
};
})
.controller('hitEntereventCtrl',函数($scope){
$scope.showinputtext=false;
$scope.enterEvent=函数(){
$scope.showinputtext=true;
};
});
//---规格-------------------------
描述('单元测试:输入事件',函数(){
变量el,范围;
beforeach(函数(){
模块('att.sandbox.attEnterEvent');
注入(函数($compile,$rootScope){
scope=$rootScope.$new();
el=$compile(angular.element(“”))(范围);
});
});
它(“回车键应调用控制器内的方法”,函数(){
scope.enterEvent=jasmine.createSpy('enterEvent');
var enterKey=jQuery.Event(“keydown”{
密码:13
});
el.触发器(输入键);
expect(scope.enterEvent).tohavebeencall();
});
});


您的意思是输入关键事件是?是。。我想为EnterEveti编写测试用例,但我不明白您的实际查询是什么is@Sprottenwels我想为enter事件编写jasmine测试用例。您是编写单元测试还是e2e测试?
var ev = jQuery.Event("keydown", {
   keyCode: 13
});

el.trigger(ev); // as el is reference to compiled directive