我想检查某些东西是否是Chai.should的功能。所以我做了
typeof(barfoo).should.equals('function')
这导致
AssertionError: expected [Function] to equal 'function'
at Context.<anonymous> (:73:31)
有人可以向我解释为什么这不起作用,因为如果我只是做
typeof(barfoo)
我得到一个字符串function
。虽然我现在用instanceOf
解决了这个问题,但我真的想理解这个
答案 0 :(得分:25)
以下是检查barfoo
是否为函数的方法:
barfoo.should.be.a('function');
答案 1 :(得分:6)
您需要额外的括号
(typeof(barfoo)).should.equals('function')
否则您的表达式被解释为
typeof ((barfoo).should.equals('function'))
如您所见,您在.should
而不是barfoo
上呼叫typeof barfoo
,然后获取最终结果的类型并将其丢弃。
这是因为typeof
它不是一个函数,它是一元运算符[1],其优先级低于成员访问运算符(.
)和函数调用[2] 。因此typeof
在此表达式中最后被评估。
答案 2 :(得分:2)
还可以使用instanceOf进行测试:
barfoo.should.be.instanceOf(Function);