4

这里我有一个函数generateBlocks,它接收一个数组blocks和一个函数onBlockClick。它返回一个对象数组,其中每个对象有两个属性labelonClick.

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

我无法测试它的返回值。这是测试用例:

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

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

我不能创建expectedas[[{label: "A", onClick: ()=>onBlockClick("A")},...]因为函数引用会有所不同。

那么如何重构 generateBlocks 函数以使其可测试呢?

4

1 回答 1

0

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

于 2017-04-25T12:36:06.993 回答