reactjs - Jest + Typescript hur testar jag en metod i React-komponenten?
Jag skapar .tsx-komponenter med Typescript/React. Jag vill göra några enhetstester av metoderna inuti React-komponenten. Säg:
export default class SomeComponent extends React.Component<undefined, SomeComponentState> {
someMethod = (string: someInput) => {
return someInput + someInput;
}
render () .. // etc
}
I en SomeComponent.test.tsx-fil, hur importerar och testar man metoden someMethod, och inte hela komponenten själv?
Jag har försökt:
import {someMethod} from "./someComponent";
fast utan tur - det verkar inte kunna anropas, och kommer att ge TS-fel: "komponenten har ingen exporterad medlem someMethod"
Svar #1
Det är en medlem av klassen, så du behöver en instans för att testa det. Du kan inte importera det direkt. Om det inte behöver åtkomst till något annat på instansen, kan du extrahera det som en separat funktion och exportera det.
Alternativt kan du använda enzym och testa det med något som detta: import {shallow} från 'enzyme';
it('.....', () => {
const wrapper = shallow(<SomeComponent />);
(wrapper.instance() as SomeComponent).someMethod('someValue');
})
