0

我正在使用“ava”框架进行反应测试,这是一段 package.json:

  "babel": {
    "presets": [
      "es2015",
      "stage-2",
      "react"
    ]
  },
  "ava": {
    "babel": "inherit",
    "require": [
      "babel-register"
    ]
  }

测试代码:

import store from '../../app/redux/store';
 import test from 'ava';
import * as c from '../../app/constants'

test('languageReducer() should correctly change the dictionary', t => {
  store.dispatch({
    type: c.LOCALIZE_CHANGE_DICTIONARY,
    dictionary: {
      a: 1,
      b: 2,
      c: 3
    }
  });

  t.DeepEqual(store.getState().localizeReducer.dictionary, {a: 1, b: 2, c: 3});

  t.is(10, 10);
});

并且有错误听起来像:

unsubscribeHistory = history.listen(function (location) {
                            ^

TypeError: Cannot read property 'listen' of undefined
    at middleware      (/Users/nikita/WebstormProjects/crm_panel/node_modules/redux-simple-  router/lib/index.js:72:33)

我应该怎么做才能让我的测试访问全局命名空间(窗口、历史等)?谢谢

4

1 回答 1

1

您似乎正在尝试使用浏览器模块,该模块尝试使用浏览器 global history,而实际上并未在浏览器中运行测试。AVA 还没有在浏览器中运行,但是你可以使用jsdom来提供一个假的浏览器环境。我们有这个食谱

于 2016-05-02T05:42:49.193 回答