在用笑话和酶测试React组件时遇到了一个问题。我习惯于模拟和测试一个函数,该函数通过酶simulate()
作为道具传递给Child组件。
当我用间谍测试组件(不是从父对象派生的)中的方法时,发生了一件有趣的事情。我将jest.spyOn
与酶的实例一起使用来测试Component类方法。像这样的东西:
jest.spyOn(instance, 'Clicker')
,然后我尝试在元素上模拟事件以调用该方法。
下面的案例1失败:
<button
onClick={this.Clicker}
>Click
</button>
带有箭头功能的案例2成功:
<button
onClick={() => this.Clicker()}
>Click</button>
两个带有Arrow函数的组件方法和一个在构造函数上带有.bind(this)
的函数都具有相同的结果。