在酶测试中的props.params

时间:2016-11-05 18:19:51

标签: reactjs enzyme

我试图在componentWillMount生命周期方法中测试发出getJSON请求的组件。它具有以下代码:

api.getJSON(`users/${this.props.params.id}`)
            .done((result) => {
                this.setState({user: result});
            });

正如您所看到的,它使用props.params.id来发出请求。我遇到的问题是在我的测试中。当我运行npm test时,它返回无法读取未定义的属性,未定义为props.params。我怎样才能在酶中得到这个物体?

1 个答案:

答案 0 :(得分:1)

这是使用含有摩卡的酶的一种方法:
- 安装 jsdom npm install --save-dev --save-exact jsdom jsdom-global
- 在之前的陈述中加载jsdom(在里面描述)

    before(function () {
      this.jsdom = require('jsdom-global')()
    })

    after(function () {
      this.jsdom()
    })


- 现在在测试中使用 mount ,如下所示:

const someData = {data1:'yyyyyy'};
const wrapper = mount(<YourComponent yourProp={someData} />);


在您的情况下&#34; yourProp &#34;应该是参数,这样您就可以将数据传递给您的属性 希望这有帮助。