Jest mock 全局变量

在做单元测试的时候,有时候需要 mock 全局变量,比如小程序 uni-app 的网络请求:uni.request。 uni 是全局变量,很难通过 mock 模块的方法去 mock。这时候需要用到 jest 的 setupFiles 配置:

  "jest": {
    "moduleFileExtensions": [
      "js"
    ],
    "transform": {
      "^.+\\.[t|j]sx?$": "babel-jest"
    },
    "setupFiles": [
      "./__mock__/setupJestMock.js"
    ]
  }

mock 文件:

let request = jest.fn(async () => {
  return [
    null,
    {
      statusCode: 300,
      data: {
        msg: "success"
      }
    }
  ];
});

global.uni = { request };

这样全局都可以调用 uni.request 变量了。