在另一个函数中测试一个函数

时间:2019-09-27 14:54:26

标签: reactjs jestjs enzyme

您好,我试图在另一个函数中测试一个函数,该函数需要第二个函数外部的参数。

export const DetailsView = ({ intl, object, onClose }) => {
  // some code
  const getIsLogbookAllowed = () => {
    return object && object.driver;
  };

  // more code
};

尝试测试此功能onLogbookReportModalClose,但是我认为当我实例化时,变量对象不会被读取,而是转换为null。

测试

test('should return \'false\' when there is no driver', () => {
    const wrapper = shallow(<DetailsView {...props} />)
    const instance = wrapper.instance()
    expect(instance.getIsLogbookAllowed()).toBe(true)
}

错误:

  

TypeError:instance.getIsLogbookAllowed不是函数

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这是因为getIsLogBookAllowed不是组件实例的属性,它是未定义的,因此不是函数。

您应该做的是这样的:

export class DetailsView extends Component {
  getIsLogBookAllowed = () => this.props.object && this.props.object.driver;

  render() {
    return <JSX />
  }
}

这样,函数就成为组件实例的一部分,您可以用函数替换类,这也可以工作。