【发布时间】:2017-11-23 11:17:24
【问题描述】:
我正在尝试提高我的 react 组件的测试覆盖率,但是我在测试组件的 render 方法中声明的变量和函数时遇到了问题。以下是我无法涵盖的几个示例:
1)
cityStateZip = `${cityStateZip} - ${location.zipExtension}`;
2)
directionsUrl = `maps://maps.apple.com/?saddr=My+Location&daddr=${gpsCoords.lat}+${gpsCoords.lng}`;
3)
const onClick = (pricingTileId) => {
if (store.selectedPharmacy !== pricingTileId) {
store.setPharmacy(pricingTileId);
}
};
代码如下:
class Tile extends Component {
const { location, store } = this.props;
render() {
let directionsUrl = `https://maps.google.com/?saddr=My+Location&daddr=${gpsCoords.lat}+${gpsCoords.lng}`;
if (navigator.platform.indexOf('iPhone') !== -1
|| navigator.platform.indexOf('iPod') !== -1
|| navigator.platform.indexOf('iPad') !== -1) {
directionsUrl = `maps://maps.apple.com/?saddr=My+Location&daddr=${gpsCoords.lat}+${gpsCoords.lng}`;
}
let cityStateZip = `${location.city}, ${location.state} ${location.zip}`;
if (location.zipExtension) {
cityStateZip = `${cityStateZip} - ${location.zipExtension}`;
}
const onClick = (pricingTileId) => {
if (store.selectedLocation !== pricingTileId) {
store.setLocation(pricingTileId);
}
};
let selectedClass;
if (store.selectedLocation === id) {
selectedClass = 'selected';
}
return (
)
有没有一种有效的方法来测试我忽略的渲染函数中声明的变量和函数? (我正在使用 Jest 和 Enzyme 进行测试)。谢谢!
【问题讨论】:
-
作为一般规则,很难在 做很多事情的大型函数中测试逻辑。这就是为什么建议编写几个较小的方法供渲染函数使用的原因;让
getCityStateZip()处理 zip 扩展逻辑,getDirectionsUrl()处理特定于设备的逻辑
标签: javascript reactjs testing jestjs enzyme