2017-02-20 74 views
2

茉莉寫單元測試時我注意到,你通常格式爲:使用jQuery選擇

expect($('#foo')).toHaveValue('#bar'); 

但最近我偶然發現,以下也適用:

expect('#foo').toHaveValue('#bar'); 

這是預期的行爲?這似乎是一種更好的方式來寫我的期望,但我從來沒有見過這種表示,我想確保我沒有濫用的東西。

任何人都可以證實這是要走的路或指引我的任何文件?

(我用的是jasmine jquery library

回答

1

我張望了一下打了這一點。雖然看起來確實有用,但有一些特殊之處。

我已經試過了諸如:

expect('.search-form').toBeInDOM(); 
expect('.search-form').toEqual('div'); 
expect('.search-form').toContainElement('.search-form__footer'); 
  • 第一個改變以 .not.toBeInDOM();
  • 第三個看起來一樣的時候的推移和忠實地失敗 - 它忠實地失敗,正在改變一些 不好的選擇器toContainElement
  • 第二個問題是因爲含糊不清:'.search-form'可以同時作爲字符串和選擇器處理。

原本很簡單回顧一下源代碼,它看起來喜歡的匹配確實解決預期實際的選擇(例如from):

toBeInDOM: function() { 
    return { 
     compare: function (actual) { 
     return { pass: $.contains(document.documentElement, $(actual)[0]) } 
     } 
    } 
    }, 

雖然我無法找到這樣的能力的任何跡象their docs。儘管如此,源代碼是源代碼))),它說什麼。現在它說它會把expect作爲選擇器。

+0

我想這是有道理的,提供jquery匹配器的庫也提供了這個。非常感謝您的見解! –