반응형
효소로 반응 성분을 테스트하는 중입니다.유형 스크립트에서 인스턴스 메서드를 찾을 수 없습니다.
React 클래스 구성 요소를 테스트하려고 합니다.
우리 반에 현재 상태와 소품을 바탕으로 무언가를 계산하는 방법이 있다고 가정해 보겠습니다.
import Component from './Component'
const wrapper = enzyme.shallow(<Component {...props} />);
it('does something', () => {
expect(wrapper.instance().someInstanceMethod(input)).toBe(true);
});
타이프스크립트가 말합니다.Property 'someInstanceMethod' is not defined on type Component<any, any>
어떻게 타이프스크립트에 우리 반이 어떻게 보이고 어떤 방법을 가지고 있는지 알려줄 수 있습니까?
이것에 대한 좋은 예가 있습니까?
호출의 구성 요소 유형을 다음으로 설정할 수 있습니다.shallow
이것은 약간 보일러 플레이트이지만, 그것은 물건들을 안전하게 만듭니다.좋은 점은 포장지가 당신이 뽑는 인스턴스가 아니라 안전하다는 것입니다.
import Component from './Component'
// Wrapper will know the type of the component.
const wrapper = enzyme.shallow<Component>(<Component {...props} />);
it('does something', () => {
expect(wrapper.instance().someInstanceMethod(input)).toBe(true);
// You can also get the state from the wrapper.
expect(wrapper.state().someComponentState).toBeTruthy();
});
한 가지 가능한 해결책은 (마젤린의 의견 덕분에) 다음의 유형을 명시적으로 선언하는 것입니다.instance()
방법.더 우아한 방법이 있을 수도 있습니다.
import Component from './Component'
const wrapper = enzyme.shallow(<Component {...props} />);
const instance = wrapper.instance() as Component; // explicitly declare type
it('does something', () => {
expect(instance.someInstanceMethod(input)).toBe(true); // no TS error
});
@marzelin과 @Chris 덕분입니다!기타 가능한 해결책
import Component from './Component'
const wrapper = enzyme.shallow(<Component {...props} />);
const instance = wrapper.instance() as any; // explicitly declare type
it('does something', () => {
expect(instance.someInstanceMethod(input)).toBe(true); // no TS error
});
이것은 어디에서나 유용합니다.someInstanceMethod
이벤트를 매개 변수로 수신, 유형을 명시적으로 선언합니다.component
테스트 사례 작성을 위해 개발자가 원하는 것이 아닌 전체 이벤트 개체를 전달해야 합니다.
언급URL : https://stackoverflow.com/questions/44625581/testing-a-react-component-with-enzyme-typescript-cant-find-instance-methods
반응형
'programing' 카테고리의 다른 글
스크롤할 때 배경 목록 보기가 검은색이 됨 (0) | 2023.07.15 |
---|---|
excel vba의 공개 정적 변수 (0) | 2023.07.15 |
Mongoose는 Mongodb의 findAndModify 메서드를 지원합니까? (0) | 2023.07.15 |
mongoose 모델이 new'ed일 때 ObjectId를 자동 생성하는 방법이 있습니까? (0) | 2023.07.15 |
파일을 제외하기 위해 .gitignore 대신 .git/info/exclude를 사용할 때는 언제입니까? (0) | 2023.07.15 |