을 사용할 <input>
때 값 에 액세스하는 방법에 대해 혼란 스럽습니다 mount
. 내 테스트로 얻은 것은 다음과 같습니다.
it('cancels changes when user presses esc', done => {
const wrapper = mount(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.render().attr('value'));
input.simulate('focus');
done();
});
콘솔이 출력합니다 undefined
. 그러나 코드를 약간 수정하면 작동합니다.
it('cancels changes when user presses esc', done => {
const wrapper = render(<EditableText defaultValue="Hello" />);
const input = wrapper.find('input');
console.log(input.val());
input.simulate('focus');
done();
});
물론 input.simulate
지금 사용하고 있기 때문에 줄이 실패합니다 render
. 제대로 작동하려면 둘 다 필요합니다. 이 문제를 어떻게 해결합니까?
수정 :
내가 언급해야 할 <EditableText />
것은 제어 된 구성 요소가 아닙니다. 나는 통과 할 때 defaultValue
에 <input />
,이 값을 설정하는 것 같다. 위의 두 번째 코드 블록은 값을 출력하고 마찬가지로 Chrome에서 입력 요소를 검사 $0.value
하고 콘솔에 입력 하면 예상 값이 표시됩니다.
input.render()
되지 않는react-dom
렌더링합니다. : 그것은이의 airbnb.io/enzyme/docs/api/ShallowWrapper/render.html