我試圖改進我的測試覆蓋率,但我在測試組件的渲染方法內聲明的變量和函數時遇到問題。下面是一對夫婦,我是無法例子讓覆蓋:如何測試反應組件渲染函數中的函數和變量?
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進行測試)。謝謝!
作爲一般規則,這是很難測試邏輯_within_大函數做了很多事情。這就是爲什麼建議編寫幾個較小的方法,渲染功能可以使用;讓'getCityStateZip()'處理zip擴展邏輯,'getDirectionsUrl()'處理設備特定的邏輯 – Hamms