在componentDidMount中调用React-Native Jest测试函数

时间:2017-02-20 06:06:19

标签: javascript unit-testing react-native tdd jestjs

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

我使用React-Native和Jest来测试我的组件。

该组件如下所示:

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中调用?

由于

1 个答案:

答案 0 :(得分:0)

呈现的react测试仅调用组件的render方法并返回输出,它并不真正启动组件,因此不会调用所有生命周期方法。您应该使用enzyme.mount

切换到支持组件完整启动的酶渲染器