有没有办法测试私有方法?

我有一个 React 组件“A”。其中一个方法 'foo' 作为 prop 传递给组件 'B'。单击组件 B 时会触发 foo。


问题 - 如何测试这个 foo 方法?


我可以通过将方法 foo 设为公开并单独测试来规避这个问题。但我不想公开。我尝试过但没有奏效的另一种方法是触发组件 B 中的 click 事件,希望它会调用 foo 方法。不确定是否可能,如果可能的话如何!


const A = () => {

    const foo = () => {console.log('Clicked!')}

    return (

      <B clickTrigger={foo} />

    )

}


森林海
浏览 180回答 2
2回答

动漫人物

没有办法在闭包中获取引用,因此您必须以某种方式将其导出到您的测试框架。有一种模式使用 WeakMap 来存储私有状态,如果测试框架可以访问 WeakMap,它可以查看内部,而没有该引用的其他对象则不能。let p = new WeakMap();const A = () => {&nbsp; &nbsp; let foo = p.get(A);&nbsp; &nbsp; return (&nbsp; &nbsp; &nbsp; &nbsp; <B clickTrigger={foo} />&nbsp; &nbsp; );};p.set(A, () => {console.log('Clicked!')});// Export A and p to testing framework but just A to clients
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript