用于Protactor中hasClass的Jasmine 2自定义匹配器

Arp*_*pit 5 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;
        });
}   
Run Code Online (Sandbox Code Playgroud)

但是当我升级到Jasmine 2然后承诺由protactor抛出错误,因为它期望返回但是下面是异步进程

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

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

Del*_*kin 6

pass应该是一个承诺,在一个没有解决.试着把它放在你的beforeEach:

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