![](/img/trans.png)
[英]Warning: Failed prop type: The prop `open` is marked as required in `ForwardRef(Modal)`, but its value is `undefined`
[英]Warning: Failed prop type: The prop open is marked as required in Snackbar, but its value is undefined
我正在嘗試將jest
快照測試引入我的應用程序。
登錄表單組件
render() {
return (
...
<DynamicSnack
dialogOpen={this.props.dialogOpen}
snackOpen={this.props.snackOpen}
snackTimer={this.props.snackTimer}
snackMessage={this.props.snackMessage}
/>
)
}
DynamicSnack組件
import Snackbar from 'material-ui/Snackbar';
render() {
let { snackOpen, snackTimer, snackMessage } = this.props
return (
<Snackbar
open={snackOpen}
message={snackMessage}
autoHideDuration={snackTimer}
onRequestClose={this.closeSnack}
/>
)
}
LoginForm.spec.js
import React from 'react'
import renderer from 'react-test-renderer'
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import LoginForm from '../../app/components/loginComponents/loginForm'
describe('LoginForm', () => {
it('should render snapshot', () => {
const component = renderer.create(
<MuiThemeProvider>
<LoginForm />
</MuiThemeProvider>
)
const tree = component.toJSON()
expect(tree).toMatchSnapshot()
})
})
警告:
警告:失敗的道具類型:道具
message
在Snackbar
中標記為必需,但其值為undefined
。
警告:失敗的道具類型:道具open
在Snackbar
中標記為必需,但其值為undefined
。
我嘗試直接導入 DynamicSnack 組件甚至 Snackbar 並手動添加屬性open={false} message={'w00f'}
但沒有任何變化。
我是單元測試的新手,並試圖從學習jest
開始。
我怎樣才能擺脫這些警告?
解決方案非常簡單,在測試LoginForm
時,您沒有傳遞Snackbar
所需的道具。 將它們傳遞為
const component = renderer.create(
<MuiThemeProvider>
<LoginForm snackOpen={true}
snackMessage={'Wrong info'}/>
</MuiThemeProvider>
)
在組件中,如果我們拼錯了所需的道具,那么我們將收到此錯誤,在我的情況下,我遇到了同樣的問題
錯誤: <Dialog in={props.open}>
<Dialog in={props.open}>
<Alert
action={
<IconButton
aria-label='close'
color='inherit'
size='small'
onClick={useCallback(() => props.closeAlert({ msg: '', open: false }))}
>
<CloseIcon fontSize='inherit' />
</IconButton>
}
>
{props.msg}
</Alert>
</Dialog>
解決方法: <Dialog open={props.open}>
<Dialog open={props.open}>
<Alert
action={
<IconButton
aria-label='close'
color='inherit'
size='small'
onClick={useCallback(() => props.closeAlert({ msg: '', open: false }))}
>
<CloseIcon fontSize='inherit' />
</IconButton>
}
>
{props.msg}
</Alert>
</Dialog>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.