React native 如何使用jest/酶测试功能组件中的条件块?

React 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

我看到了一些与此相关的问题,但没有一个回答我的问题。谁能告诉我如何测试这些文件吗。例如,我有以下功能组件(仅相关代码):

NewsFeed.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新闻提要=(道具)=>{
常量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();
})
})

只需使用不同的数据集测试组件,并断言结果是有条件的。另外,将酶和快照结合起来似乎不是一个好主意,特别是对于浅层渲染,它们是正交的。只需使用不同的数据集测试组件,并断言结果是有条件的。另外,将酶和快照结合起来似乎不是一个好主意,特别是对于浅层渲染,它们是正交的。