gpt4 book ai didi

javascript - 我如何使用 enzyme 的 setProps() 测试组件

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:29:44 28 4
gpt4 key购买 nike

//in my component i have 

{this.props.auth.isLoadding &&
<p className='text-info positionMessage'>Is registring...</p>
}

//in my test i have

it('should start a new component with set props', () => {
const props = {
auth: {
isAuth: false,
isLoadding: false
}
}
const wrapper = shallow(<ScreensCreateAccount {...props}/>)

wrapper.setProps({isLoadding: true})
//here is code for testing if <p>...</p> appeared. how can i do this?
})

我的组件以 this.props.auth.isLoadding = false 开头,当将其更改为 true 时,html 也会更改,添加 <p className='text-info positionMessage'>Is registring...</p> .我如何使用浅层 enzyme 对其进行测试?

最佳答案

这是一个适用于您的代码的工作示例:https://codesandbox.io/s/r7owz8mykm

在您的代码中,您只是忘记了 json 中 prop isLoading 的授权级别。

{isLoadding: true},而不是 {auth: {isLoadding: true} }

但是请注意,浅层渲染和 enzyme 可能不是测试 React 组件的正确工具。我用了一下,但现在我使用 react-testing-library :https://github.com/kentcdodds/react-testing-library我对此非常满意。我的测试现在更高级别并且可以像真实用户一样与我的组件交互。我可以在不破坏测试的情况下重构我的组件,使用 enzyme 编写这种测试并不容易。

我真的鼓励您至少阅读本文并发表您自己的意见。

https://blog.kentcdodds.com/why-i-never-use-shallow-rendering-c08851a68bb7

如果您已经使用 enzyme 进行了一些测试没问题,您可以在同一个项目中使用这两个库。

关于javascript - 我如何使用 enzyme 的 setProps() 测试组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54422010/

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