2016-05-29 61 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