2016-05-29 67 views
2

我想檢查Chai.should是否有什麼功能。所以,我沒有如何測試是否與Chai有關的功能。應該

typeof(barfoo).should.equals('function') 

DEMO

這導致

AssertionError: expected [Function] to equal 'function' 
    at Context.<anonymous> (:73:31) 

有人能向我解釋爲什麼這是不行的,因爲如果我簡單地做

typeof(barfoo) 

我得到一個字符串function。雖然我已經與instanceOf解決了這個,但現在我真的想了解這個

回答

4

你需要額外的括號

(typeof(barfoo)).should.equals('function') 

否則,你的表達被解釋爲

typeof ((barfoo).should.equals('function')) 

,你可以看到,你在barfoo上調用.should而不是typeof barfoo,然後得到最終結果的類型並丟棄它。

這是因爲typeof它不是函數,它是一元運算符[1]並且具有比成員訪問運算符(.)和函數調用[2]更低的優先級。因此typeof在此表達式中最後被評估。

+4

這是正確的答案,而只是想添加的斷言可以通過'barfoo.should.be.a進行(」函數')' – Dve

8

這裏是你如何檢查是否barfoo是一個函數:

barfoo.should.be.a('function'); 
+0

正是我在找什麼,謝謝。 – AkkarinZA