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的工作是检查程序中的类型是否与您编写的类型匹配。为什么要编写测试来验证类型?