React native 如何使用jest/酶测试功能组件中的条件块?
我看到了一些与此相关的问题,但没有一个回答我的问题。谁能告诉我如何测试这些文件吗。例如,我有以下功能组件(仅相关代码): NewsFeed.jsReact native 如何使用jest/酶测试功能组件中的条件块?,react-native,unit-testing,testing,jestjs,enzyme,React Native,Unit Testing,Testing,Jestjs,Enzyme,我看到了一些与此相关的问题,但没有一个回答我的问题。谁能告诉我如何测试这些文件吗。例如,我有以下功能组件(仅相关代码): NewsFeed.js const NewsFeed = (props) => { const renderitem = ({item}: props) => { if (item.id === '1') { return ( <View> <View style={style
const NewsFeed = (props) => {
const renderitem = ({item}: props) => {
if (item.id === '1') {
return (
<View>
<View style={styles.headertext}>
<Text>News Feed</Text>
</View>
<View style={styles.border} />
</View>
)
}
if (item.id === '2') {
return (
<View>
<View style={styles.header2}>
// playing with screen
</View>
<View style={styles.border} />
</View>
)
}
return (
<View />
)
}
return (
<View style={styles.container}>
<View style={styles.container1}>
<View>
<FlatList
ref={flatlist}
data={DATA}
renderItem={renderitem}
keyExtractor={(item) => item.id}
/>
</View>
</View>
</View>
)
}
const DATA = [
{
id: '1',
title: 'header1'
},
{
id: '2',
title: 'header2'
},
{
id: '3',
title: 'feed'
}
]
describe('NewsFeed', () => {
let props
let wrapper
beforeEach(() => {
props = createTestProps({})
wrapper = shallow(<NewsFeed{...props} />)
})
it('NewsFeed component renders correctly', () => {
expect(wrapper).toMatchSnapshot()
})
// Higher Order Function Testing
it('render the flatlist properties', () => {
const flatlist = wrapper.find(FlatList);
const itemWrapper = flatlist.renderProp('renderItem')({ item: DATA });
expect(itemWrapper).toMatchSnapshot();
})
})
const新闻提要=(道具)=>{
常量renderitem=({item}:props)=>{
如果(item.id=='1'){
返回(
新闻提要
)
}
如果(item.id=='2'){
返回(
//玩屏幕
)
}
返回(
)
}
返回(
项目id}
/>
)
}
现在我尝试实现这个测试,但我只能跳转到renderitem,因此我的快照只包含一个视图标记。如何检查条件语句
newsfeed.test.js
const NewsFeed = (props) => {
const renderitem = ({item}: props) => {
if (item.id === '1') {
return (
<View>
<View style={styles.headertext}>
<Text>News Feed</Text>
</View>
<View style={styles.border} />
</View>
)
}
if (item.id === '2') {
return (
<View>
<View style={styles.header2}>
// playing with screen
</View>
<View style={styles.border} />
</View>
)
}
return (
<View />
)
}
return (
<View style={styles.container}>
<View style={styles.container1}>
<View>
<FlatList
ref={flatlist}
data={DATA}
renderItem={renderitem}
keyExtractor={(item) => item.id}
/>
</View>
</View>
</View>
)
}
const DATA = [
{
id: '1',
title: 'header1'
},
{
id: '2',
title: 'header2'
},
{
id: '3',
title: 'feed'
}
]
describe('NewsFeed', () => {
let props
let wrapper
beforeEach(() => {
props = createTestProps({})
wrapper = shallow(<NewsFeed{...props} />)
})
it('NewsFeed component renders correctly', () => {
expect(wrapper).toMatchSnapshot()
})
// Higher Order Function Testing
it('render the flatlist properties', () => {
const flatlist = wrapper.find(FlatList);
const itemWrapper = flatlist.renderProp('renderItem')({ item: DATA });
expect(itemWrapper).toMatchSnapshot();
})
})
const数据=[
{
id:'1',
标题:“校长1”
},
{
id:'2',
标题:“校长2”
},
{
id:'3',
标题:“提要”
}
]
描述('NewsFeed',()=>{
让道具
让包装器
在每个之前(()=>{
props=createTestProps({})
包装器=浅()
})
它('NewsFeed组件正确呈现',()=>{
expect(wrapper.toMatchSnapshot())
})
//高阶函数测试
它('呈现平面列表属性',()=>{
const flatlist=wrapper.find(flatlist);
const itemWrapper=flatlist.renderProp('renderItem')({item:DATA});
expect(itemWrapper.toMatchSnapshot();
})
})
只需使用不同的数据集测试组件,并断言结果是有条件的。另外,将酶和快照结合起来似乎不是一个好主意,特别是对于浅层渲染,它们是正交的。只需使用不同的数据集测试组件,并断言结果是有条件的。另外,将酶和快照结合起来似乎不是一个好主意,特别是对于浅层渲染,它们是正交的。