Wim*_*nsa 5 javascript reactjs jestjs enzyme
我正在尝试使用酶浅渲染对组件进行单元测试。试图测试组件的状态 activeTab 并抛出TypeError: Cannot read property state. 我的组件手风琴。手风琴组件jsx代码
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
Run Code Online (Sandbox Code Playgroud)
和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)
})
Run Code Online (Sandbox Code Playgroud)
小智 1
您的测试应该验证组件如何工作,而不是“如何更改状态”。您需要将新的 props 放入组件中并获得结果,并且结果是预期的。
我已经用快照测试了我的组件
这是我当前项目的一个例子
describe('<Component />', () => {
it('Page rendered', () => {
const rendered = renderComponent({
...testProps,
loadDataList,
loading: true,
});
expect(rendered).toMatchSnapshot();
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4950 次 |
| 最近记录: |