1

屏幕测试.js

it('renders the Engagement Detail modal', () => {
    const tree = renderer.create(<EngagementDetailModal details={engagementData}/>).toJSON();
    expect(tree).toMatchSnapshot();
})

我要测试的组件

class CompanyDetailView extends React.Component {
    render() {
        const data = this.props.navigation.getParam('details');

        return (
            // rest of the code
        )
    }
}

我的数据变量只是一堆静态数据。开玩笑说我收到了这个错误TypeError: Cannot read property 'getParam' of undefined,它指向这一行const data = this.props.navigation.getParam('details'); 我知道组件在我运行应用程序时工作,只是测试失败了。

我认为只需在我的 Screen-test.js 文件中为组件提供道具,它的工作原理是一样的,但我没有定义。我该如何测试呢?

我也像这样使用反应导航传递道具onPress={() => this.props.navigation.navigate('EngagementDetailModal', {details: this.props.data})

4

1 回答 1

0

它无法读取getParam导航的属性,因为您没有模拟导航。所以当测试用例运行时,它不知道做什么this.props.navigation在Screen-test.js中的导入部分之后添加以下内容。

 const testProps = props => ({

  navigation: {navigate: jest.fn(), getParam : jest.fn()},
  ...props,
})

希望这可以帮助!!

于 2019-07-16T15:48:44.027 回答