为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

森林海 2021-07-01 16:00:31
我有一个 React 组件“A”。其中一个方法 'foo' 作为 prop 传递给组件 'B'。单击组件 B 时会触发 foo。问题 - 如何测试这个 foo 方法?我可以通过将方法 foo 设为公开并单独测试来规避这个问题。但我不想公开。我尝试过但没有奏效的另一种方法是触发组件 B 中的 click 事件,希望它会调用 foo 方法。不确定是否可能,如果可能的话如何!const A = () => {    const foo = () => {console.log('Clicked!')}    return (      <B clickTrigger={foo} />    )}
查看完整描述

2 回答

?
动漫人物

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


查看完整回答
反对 回复 2021-07-15
  • 2 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信