2015-10-13 74 views
0

你好的開發夥伴們,茉莉花定製用量角器/ WebDriverJS元素匹配器

我想基於一個量角器/ 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元素。

謝謝你的幫助。

回答

2

不是專家,但我覺得茉莉花自定義匹配器是具有匹配器作爲鍵的對象。所以你必須使用對象鍵來調用它。但是,您正在對result.pass = true;值進行硬編碼,這會導致您的else在發生故障時永遠不會執行,並且您的語句'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(); 

希望它能幫助。

+0

其實這是正確的,它的工作原理。 – prbaron

+0

@prbaron如果它解決了您的問題,然後將其標記爲答案,以便它可以幫助其他人。謝謝 –