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”应该是参数,这样你就可以将数据传递给你的属性。
希望对您有所帮助。
我正在尝试测试在 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”应该是参数,这样你就可以将数据传递给你的属性。
希望对您有所帮助。