Reactjs 使用jest spyOn测试库方法

Reactjs 使用jest spyOn测试库方法,reactjs,jestjs,enzyme,Reactjs,Jestjs,Enzyme,在我的项目中,有一个包含许多有用方法的util库,我想使用jest.spyOn来测试它们。这是我的util.js库的一部分 import { connect } from "react-redux"; import { withRouter } from "react-router-dom"; import { compose } from "recompose"; export const withRouterAndConnect = (mapStateToProps, mapDispat

在我的项目中,有一个包含许多有用方法的util库,我想使用
jest.spyOn
来测试它们。这是我的
util.js
库的一部分

import { connect } from "react-redux";
import { withRouter } from "react-router-dom";

import { compose } from "recompose";

export const withRouterAndConnect = (mapStateToProps, mapDispatchToProps) =>
  compose(
    withRouter,
    connect(
      mapStateToProps,
      mapDispatchToProps
    )
  );

export const applyShadow = dp => {
  if (dp === 0) {
    () => "none";
  } else {
    let shadow = "0px";
    const ambientY = dp;
    const ambientBlur = dp === 1 ? 3 : dp * 2;
    const ambientAlpha = (dp + 10 + dp / 9.38) / 100;

    shadow +=
      ambientY +
      "px " +
      ambientBlur +
      "px rgba(0, 0, 0, " +
      ambientAlpha +
      "), 0px";

    const directY = dp < 10 ? Math.floor(dp / 2) + 1 : dp - 4;
    const directBlur = dp === 1 ? 3 : dp * 2;
    const directAlpha = (24 - Math.round(dp / 10)) / 100;
    shadow +=
      directY + "px " + directBlur + "px rgba(0,0,0, " + directAlpha + ")";
    shadow => shadow;
  }
};
我使用
create react app
,当我键入
npm rum test
时,控制台中会输出错误消息

TypeError: Cannot read property '_isMockFunction' of undefined

jest.spyOn
需要一个对象作为第一个参数,而
/lib/util
字符串是给定的。监视一个你称为自己的方法是没有意义的

可能应按照以下方式进行测试:

import * as util from "./lib/util";
...
expect(util.applyShadow(2)).toEqual(...);

正是我需要的。
import * as util from "./lib/util";
...
expect(util.applyShadow(2)).toEqual(...);