修改导航道具的组件方法可以进行单元测试吗?

时间:2019-03-23 03:50:39

标签: react-native jestjs

我需要弄清楚如何测试一个不返回值并且不更改其组件任何状态的组件方法,它所做的只是按下另一个屏幕。

我正在使用玩笑和酶来访问类方法和状态。

这是我要测试的方法(如果可能):

  signUp() {
    this.props.navigation.push('Signup');
  }

1 个答案:

答案 0 :(得分:2)

是的,只需为navigation道具传递一个模拟:

import * as React from 'react';
import { shallow } from 'enzyme';

class SimpleComponent extends React.Component {
  signUp() {
    this.props.navigation.push('Signup');
  }
  render() { return null; }
}

test('signUp', () => {
  const navigationMock = { push: jest.fn() };
  const wrapper = shallow(<SimpleComponent navigation={navigationMock}/>);
  wrapper.instance().signUp();
  expect(navigationMock.push).toHaveBeenCalledWith('Signup');  // Success!
});