我有一个 React 组件“A”。其中一个方法 'foo' 作为 prop 传递给组件 'B'。单击组件 B 时会触发 foo。问题 - 如何测试这个 foo 方法?我可以通过将方法 foo 设为公开并单独测试来规避这个问题。但我不想公开。我尝试过但没有奏效的另一种方法是触发组件 B 中的 click 事件,希望它会调用 foo 方法。不确定是否可能,如果可能的话如何!const A = () => { const foo = () => {console.log('Clicked!')} return ( <B clickTrigger={foo} /> )}
2 回答
![?](http://img1.sycdn.imooc.com/533e4d470001a00a02000200-100-100.jpg)
动漫人物
TA贡献1815条经验 获得超10个赞
没有办法在闭包中获取引用,因此您必须以某种方式将其导出到您的测试框架。有一种模式使用 WeakMap 来存储私有状态,如果测试框架可以访问 WeakMap,它可以查看内部,而没有该引用的其他对象则不能。
let p = new WeakMap();
const A = () => {
let foo = p.get(A);
return (
<B clickTrigger={foo} />
);
};
p.set(A, () => {console.log('Clicked!')});
// Export A and p to testing framework but just A to clients
添加回答
举报
0/150
提交
取消