3
나는 효소를 사용하고 있습니다. 응답 라우터 링크가있는 구성 요소를 테스트해야합니다. 나는 그것을 속성이 변경 될 때 전체 컴포넌트 트리를 구성 요소의 반응 라우터를 포함하는 테스트 구성 요소 효소와 링크
- 이 효소의 마운트()를 사용하여 구성 요소를 장착해야합니다.
효소가 루트 수준에서 setProps() 만 허용하므로 내 구성 요소를 StaticRouter 또는 MemoryRouter로 래핑 할 수 없습니다.
내 현재 솔루션은 링크 렌더링 메서드를 sinon으로 스텁하는 것입니다. 다음은 간단한 예입니다.
import {Link} from 'react-router-dom';
import sinon from 'sinon';
// ....
// ....
describe('test',() => {
before(() => {
sinon.stub(Link.prototype, 'render').callsFake(function reactRouterLinkRender() {
const {innerRef, replace, to } = this.props;
const _props = {href: to, ref: innerRef, replace, onClick: this.handleClick};
return (<a {..._props}>this.props.children</a>);
});
});
});
오류 ": 당신은 라우터 외부 링크를 사용해서는 안 불가 위반"을 피하기 위해 더 좋은 방법이 있나요? 감사