Javascript 测试从另一个函数返回的函数类型
我有一个函数返回另一个函数:Javascript 测试从另一个函数返回的函数类型,javascript,node.js,typescript,testing,jestjs,Javascript,Node.js,Typescript,Testing,Jestjs,我有一个函数返回另一个函数: const returnedFunction = () => {} const returnFunction = () => { const function = returnedFunction(); // Do stuff return function; } 我想测试从returnFunction返回的函数类型是否为returnedFunction。Jest似乎在回答中
const returnedFunction = () => {}
const returnFunction = () => {
const function = returnedFunction();
// Do stuff
return function;
}
我想测试从returnFunction
返回的函数类型是否为returnedFunction
。Jest似乎在回答中提到了这一点:
expect(received).toBe(expected) // Object.is equality
Expected: "[Function returnedFunction]"
Received: [Function returnedFunction]
但是我不知道如何匹配它们。函数是通过引用进行比较的,因此如果您在
returnedFunction
和测试中构造函数,即使它们看起来相同,也不会被视为相等
您应该介绍一些在测试和代码之间共享引用的方法。比如说,
// Note that sharedFn can now be used in your test for comparison
const sharedFn = () => {};
const returnedFunction = () => { return sharedFn; };
...
const received = returnFunction();
expec(received).toBe(sharedFn);
函数通过引用进行比较,因此如果在
returnedFunction
和测试中构造函数,即使它们看起来相同,也不会被视为相等
您应该介绍一些在测试和代码之间共享引用的方法。比如说,
// Note that sharedFn can now be used in your test for comparison
const sharedFn = () => {};
const returnedFunction = () => { return sharedFn; };
...
const received = returnFunction();
expec(received).toBe(sharedFn);
请注意,
function
是javascript中的保留关键字,变量不能命名为function
我不知道你到底是什么意思
属于类型returnedFunction
您需要知道调用了哪个函数吗?除非保留对函数的引用(例如在对象中),或为它们指定唯一标识符,否则无法真正相等函数,即带有toString()
的event,这只能保证两个函数的字符串表示形式(代码)相同
我会尝试:
let returnedFunction=()=>{};
returnedFunction.id=“returnedFunction”;
常量返回函数=()=>{
常量函数=返回函数;
//做事
返回函数;
}
//正在获取返回函数的id
returnFunction().id
但是我不清楚这是为了什么…注意,
function
在javascript中是一个保留关键字,变量不能命名为function
我不知道你到底是什么意思
属于类型returnedFunction
您需要知道调用了哪个函数吗?除非保留对函数的引用(例如在对象中),或为它们指定唯一标识符,否则无法真正相等函数,即带有toString()
的event,这只能保证两个函数的字符串表示形式(代码)相同
我会尝试:
let returnedFunction=()=>{};
returnedFunction.id=“returnedFunction”;
常量返回函数=()=>{
常量函数=返回函数;
//做事
返回函数;
}
//正在获取返回函数的id
returnFunction().id
但我不清楚返回函数的目的是什么…返回函数是否有可能在自己的模块中导出?如果是这样的话,你可以模拟它,并期望它被称为?@Rezaa91,但我希望看到返回的是正确的类型,我已经在某种程度上与间谍一起这样做了。我用一个更好的例子更新了这个问题,说明了它是如何工作的,因为我不仅仅是执行函数和返回函数,而是在函数之间做一些事情。在你的例子中,
returnFunction()
实际上不返回函数,它调用returnedFunction()
返回一个空对象,然后执行//一些操作,然后返回该对象。@Wodlo啊,这是一个很好的观点。。。遗漏了这一点,正如在我的实际代码中,该函数返回另一个函数:)typescript中的typechecker的工作是检查程序中的类型是否与您编写的类型匹配。为什么要编写测试来验证类型?返回的函数是否有可能在自己的模块中导出?如果是这样的话,你可以模拟它,并期望它被称为?@Rezaa91,但我希望看到返回的是正确的类型,我已经在某种程度上与间谍一起这样做了。我用一个更好的例子更新了这个问题,说明了它是如何工作的,因为我不仅仅是执行函数和返回函数,而是在函数之间做一些事情。在你的例子中,returnFunction()
实际上不返回函数,它调用returnedFunction()
返回一个空对象,然后执行//一些操作,然后返回该对象。@Wodlo啊,这是一个很好的观点。。。遗漏了这一点,正如在我的实际代码中,该函数返回另一个函数:)typescript中的typechecker的工作是检查程序中的类型是否与您编写的类型匹配。为什么要编写测试来验证类型?