[英]Jasmine custom matchers with a Protractor/WebDriverJS element
各位開發人員大家好,
我想基於Protractor / WebDriverJS元素創建自己的自定義匹配器。 有人可以改善我當前的代碼嗎?
這是我想在規格文件中寫的
var button = element(by.tagName('button'))
expect(button).toBeEnabled();
這是我自定義的茉莉花匹配器:
'use strict';
function matcher(util, customEqualityTesters) {
return {
compare : function (actual, expected) {
var result = {};
expect(actual.isEnabled()).toBeTruthy()
result.pass = true;
if (result.pass) {
result.message = 'Expected element to be disabled';
}
else {
result.message = 'Expected element to be enabled';
}
return result;
}
};
}
module.exports = matcher;
有更好的書寫方式嗎? 因為此刻,如果出現錯誤,我Expected false to be true
以下消息: Expected false to be true
。 但是我想啟用Expected元素。
謝謝您的幫助。
不是專家,但我認為Jasmine自定義匹配器是將匹配器作為鍵的對象。 因此,您必須使用對象鍵來調用它。 但是,您正在對result.pass = true;
進行硬編碼result.pass = true;
值,這會導致您的else
永遠不會在發生故障並執行'Expected element to be enabled.'
語句時執行'Expected element to be enabled.'
將永遠不會被打印。 您可以通過以下方法進行改進-
'use strict';
var customMatchers = {
toBeEnabled: function (util, customEqualityTesters) {
return {
compare : function (actual, expected) {
var result = {};
result.pass = actual.isEnabled();
if (result.pass) {
result.message = 'Expected element to be enabled';
}
else {
result.message = 'Expected element to be disabled';
}
return result;
}
};
}
}
使用方法如下:
var button = element(by.tagName('button'))
expect(button).toBeEnabled();
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.