react-native - 可以对修改其导航 Prop 的组件方法进行单元测试吗?

标签 react-native jestjs

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

我正在使用 jest 和 enzyme 来访问类方法和状态。

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

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

最佳答案

是的,只需为 navigation 属性传递一个 mock:

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!
});

关于react-native - 可以对修改其导航 Prop 的组件方法进行单元测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55310449/

相关文章:

javascript - 在 typescript 组件导入中开 Jest 测试 : Cannot find module,

redux - 测试使用 Jest 调度其他 2 个函数的 Redux 操作?

android - 类型错误 : Cannot read property 'show' of undefined [react-native-payments]

reactjs - 无法使用 ref 调用 connect redux 组件上的子方法

javascript - Jest - Jest 遇到了意外的 token 。 Vanilla JS

javascript - Jest Enzyme 测试引发意外 token 错误

javascript - 为什么 jest 正在寻找一个不再存在的测试文件?

reactjs - React JS 中可以使用 async/await 吗?

ios - 如何在连接多个网站(以浏览器为例)的应用程序中集成iOS 12自动填充?

ios - App Store 连接操作错误 : Invalid entitlement for core nfc framework