单元测试使用scrollposition的AngularJS指令
我有一个指令,它侦听scroll事件,然后添加一个类(使其粘附到顶部) 我的问题是如何测试这种行为?我应该模拟$window,还是有更好的方法?我可以考虑做一个场景测试,但仅仅测试一个小指令似乎有些过头了 该指令如下所示:单元测试使用scrollposition的AngularJS指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个指令,它侦听scroll事件,然后添加一个类(使其粘附到顶部) 我的问题是如何测试这种行为?我应该模拟$window,还是有更好的方法?我可以考虑做一个场景测试,但仅仅测试一个小指令似乎有些过头了 该指令如下所示: directiveModule.directive('whenFilterScroll',function($window){ return function(scope, element, attr){ var logoHeight = 110;
directiveModule.directive('whenFilterScroll',function($window){
return function(scope, element, attr){
var logoHeight = 110;
angular.element($window).bind('scroll', function(){
if(this.pageYOffset > logoHeight && element.css('position') != 'fixed')
{
element.addClass('filtersFixed');
}
if(this.pageYOffset < logoHeight && element.css('position') == 'fixed')
{
element.removeClass('filtersFixed');
}
});
}
});
var shouldAddFilterClass = function (pageYOffset, logoHeight, cssPosition) {
return pageYOffset > logoHeight && cssPosition != 'fixed';
};
var shouldRemoveFilterClass = function (pageYOffset, logoHeight, cssPosition) {
return pageYOffset < logoHeight && cssPosition == 'fixed';
};
/* ...rest of code... */
angular.element($window).bind('scroll', function () {
if (shouldAddFilterClass(this.pageYOffset, logoHeight, element.css('position'))) {
element.addClass('filtersFixed');
}
if (shouldRemoveFilterClass(this.pageYOffset, logoHeight, element.css('position'))) {
element.removeClass('filtersFixed');
}
});
指令('whenFilterScroll',函数($window){
返回函数(范围、元素、属性){
高度=110;
angular.element($window.bind('scroll',function()){
if(this.pageYOffset>logoHeight&&element.css('position')!='fixed')
{
元素addClass('filtersFixed');
}
if(this.pageYOffsetdirectiveModule.directive('whenFilterScroll',function($window){
return function(scope, element, attr){
var logoHeight = 110;
angular.element($window).bind('scroll', function(){
if(this.pageYOffset > logoHeight && element.css('position') != 'fixed')
{
element.addClass('filtersFixed');
}
if(this.pageYOffset < logoHeight && element.css('position') == 'fixed')
{
element.removeClass('filtersFixed');
}
});
}
});
var shouldAddFilterClass = function (pageYOffset, logoHeight, cssPosition) {
return pageYOffset > logoHeight && cssPosition != 'fixed';
};
var shouldRemoveFilterClass = function (pageYOffset, logoHeight, cssPosition) {
return pageYOffset < logoHeight && cssPosition == 'fixed';
};
/* ...rest of code... */
angular.element($window).bind('scroll', function () {
if (shouldAddFilterClass(this.pageYOffset, logoHeight, element.css('position'))) {
element.addClass('filtersFixed');
}
if (shouldRemoveFilterClass(this.pageYOffset, logoHeight, element.css('position'))) {
element.removeClass('filtersFixed');
}
});
这样,您就可以检查回调所检查的条件。然后可以进行测试,以确保元素具有正确的CSS类。所有这些都没有嘲笑$window