尝试使用酶

时间:2018-01-29 23:05:23

标签: javascript reactjs enzyme jest

我正在尝试使用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>
        );
    }
}

2 个答案:

答案 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;渲染会引发错误,因为您尝试迭代未定义的集合