Javascript 我通过道具的反应酶单元测试中的设置状态
我正在使用酶测试下面的成分,我得到以下错误: 正如您在下面的组件中看到的,selectedAccount处于从props获取其值的状态,我在单元测试中设置了propsJavascript 我通过道具的反应酶单元测试中的设置状态,javascript,unit-testing,reactjs,redux,enzyme,Javascript,Unit Testing,Reactjs,Redux,Enzyme,我正在使用酶测试下面的成分,我得到以下错误: 正如您在下面的组件中看到的,selectedAccount处于从props获取其值的状态,我在单元测试中设置了props class Modal extends Component { constructor(props) { super(props); this.state = { selectedAccount: props.accounts[0].id }; } render() { c
class Modal extends Component {
constructor(props) {
super(props);
this.state = {
selectedAccount: props.accounts[0].id
};
}
render() {
const {selectedAccount} = this.state;
return <div>
<p>
{selectedAccount}
</p>
</div>;
}
类模态扩展组件{
建造师(道具){
超级(道具);
此.state={
selectedAccount:props.accounts[0]。id
};
}
render(){
const{selectedAccount}=this.state;
返回
{selectedAccount}
;
}
在我的测试中,我通过了设置“selectedAccount”变量的props
在这个州
以下是我的测试:
test.only('components/Modal: renders elements', t => {
const defaultProps = { accounts: [{
id: 1, desc: 'account1'
}, {
id: 2, desc: 'account2'
}
]}
const wrapper = shallow(
<Modal/>
).setProps(defaultProps);
const test = wrapper.find('p');
t.equal(test.length, 1, 'should render 1 p element ');
t.end();
});
test.only('components/Modal:renders elements',t=>{
const defaultProps={帐户:[{
id:1,描述:“account1”
}, {
id:2,描述:“account2”
}
]}
常数包装=浅(
).setProps(defaultProps);
const test=wrapper.find('p');
t、 相等(测试长度,1,'应呈现1个p元素');
t、 end();
});
为什么我传递的道具(包括带有id和desc属性的accounts数组)没有设置状态?.setProps()
正在注入属性并重新渲染。这是为了模拟随时间变化的属性。如果您希望该属性在构造期间可用,请将其作为属性传递,就像您习惯的那样:
const wrapper = shallow(
<Modal accounts={defaultProps.accounts} />
)
const wrapper=shallow(
)
const wrapper = shallow(
<Modal accounts={defaultProps.accounts} />
)