我应该为功能使用哪种Jest匹配器?

问题描述

假设一个函数返回了另一个函数。

function foo() {
  return () => 1;
}

expect(foo())之后我可以使用什么匹配器来确保foo()返回一个函数?另外,有没有办法验证功能签名?

解决方法

typeof有很多怪癖,但我认为在这种情况下使用是明智的。

expect( typeof foo() ).toBe('function')

您可以使用.length

检查一个函数定义了多少个参数。
expect( (a,b,c) => {} ).toHaveLength( 3 )

但是无法在javascript中强制执行参数的类型。所有功能都可以接受任何类型。而且,您始终可以将比“指定”更多的参数传递给函数。而且该函数可能使用arguments来读取所有这些参数,因此即使.length在您的用例中也可能用途有限。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...