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

时间:2015-05-25 15:01:23

标签: 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然后承诺由protactor抛出错误,因为它期望返回但是下面是异步进程

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

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

1 个答案:

答案 0 :(得分: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;
                    })
                };
            }
        };
    }
});