2016-09-29 1 views
2

사용자 지정 이벤트에 Enzyme의 .simulate() 메서드를 사용할 수 있습니다. 예를 들어 는 :맞춤형 이벤트에서 효소 시뮬레이션 사용?

// Code 
<Element onFoo={someFunction}></Elements> 

// Test 
const element = shallow(<Element>); 
element.simulate('foo'); 

이 방식의 사용자 정의 이벤트를 효소로 테스트해야합니다 아니면 s.th.를 사용하는 것이 더 나은 방법입니다 like :

//Test 
const element = shallow(<Element>); 
element.props.onFoo() 

답변

2

맞춤 이벤트의 경우 .simulate()이 구현되지 않은 것처럼 보입니다. 에서 사용자 정의 이벤트를 siumlate하려고 나를 위해 일한 무엇

wrapper.find(Child).prop('customEvent')(fakeEvent) 
+1

답장을 보내 주셔서 감사합니다. on ..이 (예 : onFoo와 같이) 앞면에있는 한 맞춤 이벤트에 대한 시뮬레이션() simulate() 메서드를 잘못 사용하고 있거나 잘못 구현 한 것이 아니기 때문에 api 변경으로 인해 테스트가 중단되는 경우 방황하고 있습니다. 구현은 괜찮습니다. – Frank

0

:이 주제를 논의 GitHub의에 issue효소 테이너 중 하나 당신이 제공 한 두 번째 방법을 사용하는 제안이 있습니다 인 구성 요소가없는 최상위 구성 요소는 다음되면서 :

를 myComponent는, onThingSelected 구성 요소에 이름을 정확하게 사용자 정의 이벤트 핸들러를 반작용 구성 요소, 그리고 newThing 예상 유형의 목적은
const myComponent = enzymeWrapper.find('MyComponent'); 
myComponent.node.onThingSelected({}, { thing: newThing}); 

이벤트 핸들러에 의해.

1

그러나 실제로 현재 얕은 렌더링에서 작동하지 않습니까?

/* Film component */ 
render() { 
    return (
    ... 
    <FilmHeader onSearchClick={this.handleSearchClick}> 
    ... 
) 
} 

/* Test */ 
const wrapper = shallow(<Film {...props} />); 
wrapper.find('FilmHeader').simulate('searchClick'); 

상술 한 효소 issue은 여전히 ​​열려있다. 그리고 문서에는이 기능에 대해 명확한 내용이 없습니다. 어쩌면 문제는 문서 자체 일 것입니다.

+0

위의 코드는 최소한 Enzyme 3과 React 16에서 잘 작동합니다. – dubbha

+0

@KARTHIKEYAN A., 당신의'., 이전에 있을지도 모르겠다 .' 편집, 좀 바꿔 주시겠습니까? – dubbha