检查是否用酶调用还原作用

时间:2018-04-19 14:17:33

标签: react-native react-redux jestjs enzyme redux-mock-store

我正在尝试测试是否已从我的React Native项目中的componentDidMount调用了调度。 我的问题是我无法弄清楚如何检查autoLogin()是否已被调用。

test.js

import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';

const mockStore = configureMockStore([thunk]);

it('should be called once', () => {
    const wrapper = shallow(<SplashScreen store={mockStore()} />).dive();
});

index.js

class SplashScreen extends Component {
    componentDidMount() {
        this.props.autoLogin();
    }
}

export default connect(null, { autoLogin })(SplashScreen);

1 个答案:

答案 0 :(得分:0)

我终于发现async / await是我问题的解决方案。 如果没有等待wrapper.dive(),autoLogin将在我的测试运行完毕后触发。

it('should be called once', async () => {
    const autoLogin = jest.fn();
    const wrapper = shallow(<SplashScreen store={mockStore()} autoLogin={autoLogin} />);
    await wrapper.dive();
    expect(autoLogin.mock.calls.length).toBe(1);
});