props.params 在酶测试中

props.params in Enzyme test

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

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

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

这是将酶与摩卡一起使用的一种方法:
- 安装 jsdom npm install --save-dev --save-exact jsdom jsdom-global
- 在你的 before 语句中加载 jsdom(在 describe 内)

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

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


- 现在在你的测试中使用 mount 像这样:

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


在你的情况下,“yourProp”应该是参数,这样你就可以将数据传递给你的属性。
希望对您有所帮助。