I am Testgerät-Komponente reagieren. Eine Komponente importiert andere Komponente und verwendet ihre Requisiten. Hier sind jsx Dateien:Einheit Test A Komponente- Scherz reagieren, Enzym
class First extends React.PureComponent {
render() {
const { name, isSelected, onClick } = this.props;
const activeClass = isSelected ? styles.active : '';
return (
<div
className={`${styles.first} ${activeClass}`}
role="button"
tabIndex={0}
onClick={() => onClick(name)}
>
{name}
</div>
);
}
}
First.propTypes = {
name: PropTypes.string.isRequired,
isSelected: PropTypes.bool,
onClick: PropTypes.func,
};
export default First;
Hier ist meine zweite Klasse, die diese Klasse importiert: i
mport First from '../First/First';
const Second = ({ values, passedVal, onClick }) => {
const second = values.map(vlaue =>
<First
key={value}
name={value}
isSelected={value === passedVal}
onClick={onClick}
/>,
);
return (
<div >
{Second}
</div>
);
};
Second.propTypes = {
values: PropTypes.arrayOf(PropTypes.string),
passedVal: PropTypes.string,
onClick: PropTypes.func,
};
export default FilterList;
Hier ist mein Test. Ich möchte isselected Zustand in meinem Test zu testen:
Es gibt mir undefined, da dies Prop First Class ist. Wie kann ich diese Logik hier überprüfen? Müssen Sie zuerst eine Instanz erstellen und dann prüfen?
ich oben versucht, es gibt mir eine Fehlermeldung „nicht Eigentum‚SetProps‘undefinierte lesen“. – TesterGG
Sind Sie sicher, dass Sie die 'second' Funktion aufrufen, die die Komponente macht? –
Ja, ich kann Eigenschaften festlegen. Ich habe mit console.log() verifiziert. Ich habe das Problem beim Testen isAusgewählt Prop. Wie kann ich es nennen? seine Stütze der ersten Klasse? kann ich es hier nicht testen? Wenn ich richtig komme, wenn die Komponente gerendert wird, sollte IsActive da sein. Ich habe versucht mit: const isActive = secondComponent.find ('div'); expect (isActive) .toEqual (wahr); aber es ist gescheitert. – TesterGG