如何使用 Chai.should 测试某物是否是一个函数
How to test if something is a function with Chai.should
我想检查某些东西是否是 Chai.should 的函数。所以我做了
typeof(barfoo).should.equals('function')
这导致
AssertionError: expected [Function] to equal 'function'
at Context.<anonymous> (:73:31)
有人可以向我解释为什么这不起作用,因为如果我只是这样做
typeof(barfoo)
我得到一个字符串 function
。虽然我现在已经用 instanceOf
解决了这个问题,但我真的很想了解这个
你需要额外的括号
(typeof(barfoo)).should.equals('function')
否则你的表达式被解释为
typeof ((barfoo).should.equals('function'))
如您所见,您在 barfoo
而不是 typeof barfoo
上调用 .should
,然后获取最终结果的类型并将其丢弃。
这是因为typeof
它不是一个函数,它是一个一元运算符[1] and have a lower precedence than Member Access operator (.
) and Function Call[2]。因此 typeof
在此表达式中最后求值。
检查 barfoo
是否为函数的方法如下:
barfoo.should.be.a('function');
也可以使用 instanceOf 进行测试:
barfoo.should.be.instanceOf(Function);
我想检查某些东西是否是 Chai.should 的函数。所以我做了
typeof(barfoo).should.equals('function')
这导致
AssertionError: expected [Function] to equal 'function'
at Context.<anonymous> (:73:31)
有人可以向我解释为什么这不起作用,因为如果我只是这样做
typeof(barfoo)
我得到一个字符串 function
。虽然我现在已经用 instanceOf
解决了这个问题,但我真的很想了解这个
你需要额外的括号
(typeof(barfoo)).should.equals('function')
否则你的表达式被解释为
typeof ((barfoo).should.equals('function'))
如您所见,您在 barfoo
而不是 typeof barfoo
上调用 .should
,然后获取最终结果的类型并将其丢弃。
这是因为typeof
它不是一个函数,它是一个一元运算符[1] and have a lower precedence than Member Access operator (.
) and Function Call[2]。因此 typeof
在此表达式中最后求值。
检查 barfoo
是否为函数的方法如下:
barfoo.should.be.a('function');
也可以使用 instanceOf 进行测试:
barfoo.should.be.instanceOf(Function);