componentDidMount
调用api的商店- api 是一个具有导出
fetchVersionsRequest
功能的模块 fetchVersionsRequest
使用 Promise 调用 api 端点all
承诺解决后由商店更新- Mobx, via
@observer
将再次调用组件渲染,因为all
已更新
请检查评论
主页组件
@inject('versionStore') @observer
export default class extends Component {
componentDidMount() {
const { fetch } = this.props.versionStore;
fetch(); // Will call api.fetchVersionsRequest
}
render() {
// all is an array updated after call api.fetchVersionsRequest resolved
const { all } = this.props.versionStore;
// ...
return {all.map(it => <p>{it.name}</p>)}
}
}
如何测试组件是否正确呈现?
我想使用快照功能,给一个api返回的列表,组件应该是快照
我的测试主页组件
it('renders versions', function() {
const versions = [
{ id: 1, name: 'version1' },
{ id: 2, name: 'version2' },
];
api.fetchVersionsRequest = jest.fn(() => {
return Promise.resolve(versions);
});
const wrapper = shallow(<Home {...this.minProps} />);
expect(toJson(wrapper)).toMatchSnapshot(); // PROBLEM Snapshot does not contain any p element
}