【发布时间】:2015-12-22 10:06:23
【问题描述】:
在data-type-ahead 调用的我的directive 中,在一系列事件中,我有以下内容:
$scope.test = 5;
// Bind blur event and clear the value of
element.bind('blur', function(){
$scope.test = 0;
});
我已尝试在单元测试中使用多种方法来正确测试此blur 事件的功能,但我没有成功。我见过提到函数triggerHandler。这是我在单元测试中的尝试:
//Inject $compile and $rootScope before each test.
beforeEach(inject(function(_$compile_, _$rootScope_) {
$compile = _$compile_;
$rootScope = _$rootScope_;
$scope = $rootScope.$new();
$scope.test = 5
html = angular.element('<input type="text" data-type-ahead/>');
//Apply $scope to directive html.
directive = $compile(html)($scope);
//Trigger digest cycle.
$scope.$digest();
}));
it('should trigger the events bound to the blur event on the directive', function() {
html.triggerHandler('blur')
expect($scope.test).toEqual(0);
});
但是这失败了,因为$scope.test 仍保留在 5 上。是 html 元素不正确,在我触发事件后是否需要另一个 $digest 或 $apply?
【问题讨论】:
标签: angularjs unit-testing angularjs-directive karma-jasmine