我正在尝试使用Enzyme编写测试,但每次传入setProps方法时,我都会收到错误:TypeError:无法读取未定义的属性“map”。这让我感到困惑,因为在我的理解中调用.map是在下面的setProps函数中正确定义的。如果我定义了setProps,为什么会出现此错误?如何解决?
beforeEach(() => {
const wrapper = shallow(<Map />);
})
describe('<Map />', () => {
it('should render some stuff', () => {
wrapper.setProps({ stories: [{id: 1, title: "hello world", edit: true}] })
});
});
,组件是:
import React, { Component } from 'react';
class Map extends Component {
state = {
edit: true
}
render() {
let layout = (
<div>
{ this.props.stories.map((story, index) => {
return story.edit ?
<div key={story.id}>
<br/>
<input type="text" defaultValue={story.title} ref="stuff2" /><button name="Save" onClick={this.props.handleToggle} value={story.id}>Save</button>
<br/>
</div>
:
<div key={story.id}>
<br/>
<div ref="1">{story.title}<button key={story.id} onClick={this.props.handleToggle} value={story.id}>Edit</button><button onClick={this.props.handleDelete}>Delete</button></div>
<br/>
</div>
})}
</div>
)
return (
<div>
{layout}
</div>
);
}
}
答案 0 :(得分:1)
您确定要在阵列上调用angle = 0.985626 * OffsettJ2000 / tau[i] + phi[i]
PBS += A[i] * math.cos(math.radians(angle))
吗? .map
是一个对象。如果您尝试映射 数组的道具,您需要确保正确定位
答案 1 :(得分:1)
请查看反应如何与酶起作用,this.props.stories
最初将undefined
,因为生命周期的工作原理。
因此,在测试中使用setProps
之前,没有任何内容作为stories
传递给初始渲染。
并且componentWillMount,渲染将发生=&gt;渲染会引发错误,因为您尝试迭代未定义的集合