测试从另一个函数返回的函数类型

我有一个返回另一个函数的函数:


    const returnedFunction = () => {}


    const returnFunction = () => {

        const function = returnedFunction();


        // Do stuff


        return function;

    }

returnFunction我想测试从is 类型返回的函数类型returnedFunction。Jest 似乎在回应中接受了它:


    expect(received).toBe(expected) // Object.is equality


    Expected: "[Function returnedFunction]"

    Received: [Function returnedFunction]

但我不知道如何匹配它们。


慕神8447489
浏览 117回答 2
2回答

慕桂英546537

returnedFunction函数通过引用进行比较,因此如果您在测试中构建函数,即使它们看起来相同,也不会被视为相等。您应该引入一些在测试和代码之间共享引用的方法。例如,// Note that sharedFn can now be used in your test for comparisonconst sharedFn = () => {};const returnedFunction = () => { return sharedFn; };...const received = returnFunction();expec(received).toBe(sharedFn);

回首忆惘然

注意这function是javascript中的保留关键字,不能命名变量function我不确定你到底是什么意思是类型returnedFunction您需要知道调用了哪个函数吗?除非你保留对你的函数的引用(例如在一个对象中),或者为它们分配唯一标识符,否则你不能真正等于函数,事件与toString(),这只会保证两个函数的字符串表示(代码)是相同的.我会尝试:let returnedFunction = () => {};returnedFunction.id = "returnedFunction";const returnFunction = () => {    const function = returnedFunction;    // Do stuff    return function;}// getting id of the returned functionreturnFunction().id但我不清楚这个目标......
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript