假设我有此组件:
import React, { Component } from 'react';
import { Text, TouchableWithoutFeedback, View } from 'react-native';
class MyComp extends Component {
onRowPress() {
this.myCoolFunction();
}
myCoolFunction() {
console.log('hi');
}
render() {
return (
<TouchableWithoutFeedback onPress={this.onRowPress.bind(this)}>
<View>
<Text>Hello World</Text>
</View>
</TouchableWithoutFeedback>
);
}
}
export default MyComp;
我该如何模拟1个单击" touchableWithOutFeedback"并确保" mycoolfunction"被称为1次?
如果不是必须的,那么我宁愿不添加更多的依赖项,而不是" react-dom"one_answers" react-addons-test-utils"。
我看到了很多指南,但我担心它们已经过时了,我想确保我不会经历一些不需要的解决方法并膨胀我的代码。
我在其最新版本中有开玩笑/react/react本地人。
编辑:在开玩笑的官方文档中,它说可以使用酶或测试作用进行DOM测试。如何使用Testutils完成此操作?
我知道这个答案并不适应您不使用任何其他依赖项的要求,但是我认为您不能仅用开玩笑和酶做到这一点。Jest为您提供跑步者,断言功能和快照测试,并且酶可以进行所有DOM操作和事件模拟。但是,要知道您的功能被完全调用了一次,您将需要其他东西(即间谍)。我们为此使用sinon
,例如:
...
const onButtonClick = sinon.spy()
const wrapper = shallow(<MyComponent onButtonClick={onButtonClick}/>)
wrapper.find(`img`).first().simulate(`click`)
wrapper.find(`img`).first().simulate(`click`)
expect(onButtonClick.calledTwice).toBe(true)
...
我知道您不想添加其他依赖项,但是在下划线库中有一个函数,称为
创建一个只能一次称为一次的函数的版本。对修改功能的重复调用将无效,从原始调用中返回值。
这样,您将确定它被称为一次。