1
最近我正在嘗試編寫指令的測試用例。如何通過編寫測試用例來測試指令?
例如,這是一個在瀏覽器中處理DOM的指令。
var demoApp = module('demoApp', ['']);
demoApp.directive('tabTo', function(){
var linkFunc = function(scope, element, attrs, controllers){
element.bind('keyup', function(e){
var maxLength = attrs['maxlength'] || attrs['ng-maxlength'];
if(maxLength && this.value.length === length){
var tabTarget = angular.element.find('#' + attrs['tab-to']);
if(tabTarget){
tabTarget.focus();
}
}
}
}
return {
restrict: 'A',
link: linkFunc
}
});
然後我在這裏實現的測試用例:
describe('Unit testing great quotes', function() {
var $compile;
var $rootScope;
beforeEach(module('myAppdemoApp'));
beforeEach(inject(function(_$compile_, _$rootScope_){
$compile = _$compile_;
$rootScope = _$rootScope_;
}));
it('Replaces the element with the appropriate content', function() {
var element = $compile('<input type="text" maxlength="8" id="input1" tab-to="input2" /><input type="text" id="input2" maxlength="8" tab-to="input3"/> <input type="text" id="input3" max-length="8" />')($rootScope);
element.appendTo(document.body); //appendTo to document so that in directive can find it by 'angular.element.find()'
$rootScope.$digest();
var tmpInputs = angular.element.find('#input1');
var input1 = tmpInputs[0];
tmpInputs = angular.element.find('#input2');
var input2 = tmpInputs[0];
spyOn(input2, 'focus');
input1.val('12345678');
input1.keyup();
expect(input2.focus).haveBeenCalled();
});
});
我的問題是,它編寫測試用例的正確方法?因爲我對單元測試不太瞭解。 我剛剛和我的同事談過了,他告訴我這看起來像是端到端的測試。那麼這是否意味着要測試指令,我們必須編寫端到端測試?
有人能幫助我嗎? Thx很多...
雖然我在6個月前得到了這個,但是,thx爲您的答案。 :) – 2015-04-26 13:26:47