Vue + Jest模拟全局方法

时间:2019-07-12 16:23:38

标签: javascript vue.js jestjs

我正在一个项目中,该项目的方法在index.html文件的script标签中定义。由于某种原因,这会导致Jest在运行时失败。

index.html

<script>
var getCookie = function(cookieVal) { return cookieVal; }
</script>

要解决此问题,我尝试在Jest全局变量中定义“ getCookie”变量,例如:

package.json

"jest": {
  "globals": {
      "getCookie": "someString"
    }
}

这确实定义了getCookie,但是在运行测试时出现此错误:

  

data()中的错误:“ TypeError:getCookie不是函数”

这很有意义,但是我不确定如何在globals对象中将其定义为函数。

如何在Jest中模拟getCookie函数?

1 个答案:

答案 0 :(得分:1)

即使使用Jest docs indicate that globals cannot contain functions,我仍然验证仍可以使用function expressionarrow function来定义全局函数:

{
  jest: {
    globals: {
      getCookie() { return 'someCookie' },  // function expression
      getCookie: () => 'someCookie',        // arrow function
    }
  }
}

或者,您可以定义一个setupFiles来设置global.getCookie

// package.json
{
  jest: {
    setupFiles: ['./jest.setup.js']
  }
}

// jest.setup.js
global.getCookie = () => 'someCookie'