Javascript测试存根全局变量函数

时间:2015-11-27 16:06:49

标签: javascript unit-testing testing reactjs sinon

我正在为React应用程序编写一些单元测试。

在页面标题中,“mixpanel”跟踪库会添加到<script>标记之间,如下所示:https://mixpanel.com/help/reference/javascript。根据他们的文档,“该代码段提供了一个名为mixpanel的全局变量,您可以使用该变量将数据发送到Mixpanel API。”

在React组件的代码中,Mixpanel的跟踪功能被调用如下:

  showModal: function(evt) {
    evt.preventDefault()
    var modal = this.refs.modal
    modal.showModal()
    mixpanel.track("Login button clicked")
  }

但是,在测试中,由mixpanel.track未定义(调用showModal时)导致错误。我已将测试环境设置为使用testdom,如此处所述:http://willcodefor.beer/react-testing-with-mocha-chai-sinon-and-gulp/和此处http://www.hammerlab.org/2015/02/14/testing-react-web-apps-with-mocha/

我相信我需要模拟track方法至少存在,以便在测试中不会抛出错误。这是正确的,这是最好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以创建全局对象来模拟它

mixpanel = {
  track : fucntion(){}
}