gpt4 book ai didi

javascript - enzyme 测试同一组件内的多种渲染方法

转载 作者:行者123 更新时间:2023-12-03 03:30:42 25 4
gpt4 key购买 nike

我有一个具有多种渲染方法的组件。我怎样才能测试它们呢?使用 enzyme 和 Jest 进行 react 。

一些伪代码作为我的组件结构的示例,因为该组件非常大。

class MyComponent extends Component{

render1(){
return(
<div>render1</div>
)
}

render2(){
return(
<div>render2</div>
)
}

render(){
return(
<div>default</div>
)
}
}

export default MyComponent;

我的测试仅涵盖render(),它不涵盖render1()render2()。看起来 enzyme 会查看默认的 render() 方法?

describe('MyComponent', () => {
beforeEach(() => {
wrapper = shallow(<MyComponent />);
});

it('MyComponent renders without crashing', () => {
expect(wrapper.length).toBeTruthy();
});
};

如何在我的报道中包含 render1()render2()

最佳答案

您应该只有一个 render() 方法,即使用 ReactDOM.renderenzyme.shallow 挂载组件时调用的方法。其他渲染方法对您来说效果如何?

也许你可以这样做,根据某些 prop 或状态决定从 render() 方法调用哪个方法:

class MyComponent extends Component{

render1(){
return(
<div>render1</div>
)
}

render2(){
return(
<div>render2</div>
)
}

render(){
const {shouldRender1, shouldRender2} = this.props;

if (shouldRender1) {
return this.render1();
}

if (shouldRender2) {
return this.render2();
}

return(
<div>default</div>
)
}
}

export default MyComponent;

然后你的测试可以如下所示:

describe('MyComponent', () => {
it('MyComponent should render with render1 method', () => {
wrapper = shallow(<MyComponent shouldRender1={true} />);
expect(wrapper.length).toBeTruthy();
});

it('MyComponent should render with render2 method', () => {
wrapper = shallow(<MyComponent shouldRender2={true} />);
expect(wrapper.length).toBeTruthy();
});

it('MyComponent should render with default render method', () => {
wrapper = shallow(<MyComponent />);
expect(wrapper.length).toBeTruthy();
});
};

关于javascript - enzyme 测试同一组件内的多种渲染方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46121245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com