简体   繁体   English

如何测试返回函数的函数?

[英]How to test a function that returns functions?

Here I have a function generateBlocks that takes in an array blocks and a function onBlockClick . 这里我有一个函数generateBlocks ,它接受一个数组blocks和一个函数onBlockClick It returns an array of object where each object has two properties label and onClick . 它返回一个对象数组,其中每个对象都有两个属性labelonClick

function generateBlocks(blocks, onBlockClick){
   return blocks.map(block => (
     {
        label: block.label,
        onClick: ()=>onBlockClick(block.name)
     }
 ))
}

I'm unable test it's return value. 我无法测试它的返回值。 Here's the test case: 这是测试用例:

const blocks = [{label: "A", name: "a"}, {label: "B", name: "b"}];
const onBlockClick = someFunction(){};

expect(generateBlocks(blocks, onBlockClick)).to.deep.equal(expected)

I cannot create expected as [[{label: "A", onClick: ()=>onBlockClick("A")},...] because function reference will be different. 我无法创建expected [[{label: "A", onClick: ()=>onBlockClick("A")},...]因为函数引用会有所不同。

So how do I refactor generateBlocks function to make it testable? 那么如何重构generateBlocks函数以使其可测试?

您可以在函数ref上使用.toString()方法,并与期望的字符串结果进行比较。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM