反应新的开玩笑测试功能在componentDidmount中调用



我正在尝试测试我组件的componentDidMount钩中是否调用了一个函数。

我使用反应和开玩笑来测试我的组件。

组件看起来像这样:

const tracker = new GoogleAnalyticsTracker('UA-79731-33');
class MyComponent extends Component {
    componentDidMount() {
        tracker.trackScreenView(this.props.title);
    }
}

所以我嘲笑GoogleAnalyticsTracker,看起来还可以。尽管我不确定如何在componentDidMount钩中测试它已被调用。

这是我的测试,它不起作用:

import 'react-native';
import React from 'react';
import renderer from 'react-test-renderer';
import { GoogleAnalyticsTracker } from 'react-native-google-analytics-bridge';
import MyComponent from '../';
jest.mock('react-native-google-analytics-bridge');
const tracker = new GoogleAnalyticsTracker('ABC-123');
describe('MyComponent', () => {
    it('renders', () => {
        const tree = renderer.create(
            <MyComponent />,
        ).toJSON();
        expect(tree).toMatchSnapshot();
        expect(tracker.trackScreenView).toBeCalled();
    });
});

toBeCalled()返回false。

如何测试componentDidMount中调用我的功能?

谢谢

React测试渲染仅调用组件的渲染方法并返回输出,它并没有真正启动组件,因此未调用所有生命周期方法。您应该切换到使用enzyme.mount

的组件的全部开始的酶渲染器

相关内容

  • 没有找到相关文章

最新更新