主角中hasClass的Jasmine 2自定义匹配器

主角中hasClass的Jasmine 2自定义匹配器,jasmine,protractor,karma-jasmine,Jasmine,Protractor,Karma Jasmine,我将我的Jasmine 1.3升级到2.0,所以我添加了一个自定义匹配器来检查css是否存在 hasClass = function(actual,expected){ return actual.getAttribute('class').then(function (classes) { return classes.split(' ').indexOf(expected) !== -1; }); } 但当我升级到Jasmine 2时,

我将我的Jasmine 1.3升级到2.0,所以我添加了一个自定义匹配器来检查css是否存在

hasClass = function(actual,expected){
    return actual.getAttribute('class').then(function (classes) {
            return classes.split(' ').indexOf(expected) !== -1;
        });
}   
但当我升级到Jasmine 2时,Proactor会抛出错误,因为它期望返回,但下面是异步过程

hasClass = function(){
     return compare: function(actual,expected){
        return actual.getAttribute('class').then(function (classes) {
                return {pass: classes.split(' ').indexOf(expected) !== -1};
            });
    }
}

如何测试元素中存在的类?我不想使用jasmine jquery

通过的
应该是一个承诺,而不是一次解决。在每次
之前,请尝试将其放入您的

this.addMatchers({
    hasClass: function() {
        return {
            compare: function(actual, expected) {
                return {
                    pass: actual.getAttribute('class').then(function(classes) {
                        return classes.split(' ').indexOf(expected) !== -1;
                    })
                };
            }
        };
    }
});

只是想知道你为什么需要上课?不久前我也使用过,但后来我意识到量角器E2E测试的目标是测试功能,而不是内部实现。因此,例如,div仍然可以有这个类,但不能正常工作,那么就不需要检查它是否有这个类。@IgorShubovych这取决于它。假设您单击某个内容,然后您想显示其他div,然后您如何测试它,或者说同一个div有成功颜色和失败颜色,然后您如何在不同的场景中测试(field.getCssValue('border-color')).toBe('rgb(242,88,5'));它是否也检查外部css属性??我一直在深入研究Jasmine 2代码,但我不知道它在哪里处理承诺。相反,它似乎只是检查“pass”的整体真实性(承诺对象总是看起来真实的,不管它实际如何解决/失败)。你确定它能按预期工作,而不是总是看起来通过吗?量角器会覆盖Jasmine,使其工作。你要查找的代码在中