효소 얕은 렌더링을 사용하는 구성 요소에 대한 단위 테스트를 수행하려고합니다. 구성 요소의 state activeTab을 테스트하려고 시도하면 TypeError: Cannot read property state
이 발생합니다. 내 구성 요소 아코디언. Accordion 구성 요소 jsx 코드효소를 이용한 반응 테스트 TypeError : 정의되지 않은 '상태'속성을 읽을 수 없음
class Accordion extends Component {
constructor(props) {
super(props)
this.state = {
activeTab: 0
}
}
static defaultProps = {
tabs: [{title: 'Status'}, {title: 'Movement'}]
}
render() {
const { tabs } = this.props
, { activeTab } = this.state
return (
<div className={`accordion`}>
{tabs.map((t, i) => {
const activeClass = activeTab === i ? `accordion--tab__active` : ''
return(
<section key={i} className={`accordion--tab ${activeClass}`}>
<header className={`accordion--header`}>
<h4 className={`accordion--title`}>
<button onClick={() => {this._selectAccordion(i)}}>{t.title}</button>
</h4>
</header>
<div className="accordion--content">
{t.title}
Content
</div>
</section>
)
})}
</div>
)
}
_selectAccordion = activeTab => {this.setState({activeTab})}
}
export default Accordion
및 Accordion.react.test.js는
import { shallow } from 'enzyme'
import Accordion from './components/Accordion'
test('Accordion component',() => {
const component = shallow(<Accordion name={`Main`}/>)
expect(component.state('activeTab')).equals(0)
})
나는'.equals 변경해야하지만 시험은, 내 컴퓨터에서 잘 실행 (0)' .toEqual (0)'로 변경하십시오. 어쩌면 효소/노드 버전과 같은 디버깅 정보를 공유하거나 적어도 전체 오류 메시지를 붙여 넣을 수 있습니다. 붙여 넣은 메시지는 메시지의 절반 정도입니다. – AVAVT
REACT를 Jsx 파일로 가져 왔습니까? –
예'jsx' 파일에 React를 가져옵니다. –