Javascript not.custom_matcher错误-Jasmine
我在Javascript not.custom_matcher错误-Jasmine,javascript,selenium-webdriver,jasmine,Javascript,Selenium Webdriver,Jasmine,我在jasmine中创建了一个custommatcher,以验证元素是否具有类。这是我放在beforeach()函数中定义自定义匹配器的代码: beforeEach(function() { jasmine.addMatchers({ toHaveClass: function() { return { compare: function(actual, expected) {
jasmine
中创建了一个custommatcher
,以验证元素是否具有类。这是我放在beforeach()
函数中定义自定义匹配器的代码:
beforeEach(function() {
jasmine.addMatchers({
toHaveClass: function() {
return {
compare: function(actual, expected) {
return {
pass: actual.getAttribute('class').then(function(classes) {
return classes.split(' ').indexOf(expected) !== -1;
})
}
}
}
}
});
this.driver = new webdriver.Builder().forBrowser('firefox').build();
this.driver.manage().window().maximize();
this.driver.get('http://localhost:8000/');
});
然后在中,它函数toHaveClass
可以正常工作,但是当我将它与not
方法结合使用时,我犯了一个非常奇怪的错误。这是代码中出现错误的部分:
it('should not create conflicts between the headers', function() {
this.driver.manage().window().setSize(767, 632);
this.driver.findElement(webdriver.By.className('navbar-toggle')).click();
var headerBar = this.driver.findElement(webdriver.By.className('navbar-collapse'));
this.driver.manage().window().setSize(1000, 632).then(function() {
expect(headerBar).not.toHaveClass('in');
});
});
您知道导致测试崩溃的问题是什么吗?提前感谢您的回复 在我看来,您的实际
结束了未定义
或空
,因为您避免返回-1
使用行返回类.split(“”).indexOf(预期)!=-1;代码>只返回找到的值,因此不会返回未找到的值
您可以尝试的一件实验性事情是删除条件!==-1
,因此也会返回一个未找到的
。然而,我不知道这有什么副作用;它可能只是在另一个部分中断,或者(正如.not
正在寻找某种false
-return),它仍然可能不起作用,甚至您使用expect().toHaveClass()的阳性案例在失败时也可能成功结束
我看到的更安全的选择是创建另一个自定义匹配器toNotHaveClass
,然后仅在==-1
上返回,因此只有在找不到值时才返回。基本上:
jasmine.addMatchers({
toNotHaveClass: function() {
return {
compare: function(actual, expected) {
return {
pass: actual.getAttribute('class').then(function(classes) {
return classes.split(' ').indexOf(expected) === -1;
})
}
}
}
}
});