【发布时间】:2017-05-11 00:07:04
【问题描述】:
假设我有这个组件:
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' 和 'react-addons-test-utils' 之外的更多依赖项。
我看到很多指南声称这个和那个,但我担心它们已经过时了,我想确保我不会经历一些不必要的变通方法并让我的代码臃肿。
我有最新版本的 jest/react/react native。
编辑:在Jest's official documentation 中,它说可以使用 Enzyme 或 TestUtils 进行 DOM 测试。如何使用 TestUtils 完成此操作?
【问题讨论】:
-
看看这个来自 React 页面的tutorial。您应该测试的是 Facebook 建议的组件状态,而不是 onClick 是否已执行。现在,如果您在单击按钮后所期望的是正在调用另一个组件,那么您应该模拟该组件。
-
如您所见,我的 onClick 不会操纵状态。这些也是反应测试,因此更容易访问 DOM。
标签: reactjs testing react-native jestjs