簡體   English   中英

具有Protractor / WebDriverJS元素的Jasmine自定義匹配器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM