javascript - 使用 ava 测试访问全局命名空间

标签 javascript unit-testing ava

我正在使用“ava”框架进行 react 测试,这是一段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)

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

最佳答案

您似乎正在尝试使用浏览器模块,该模块尝试使用浏览器全局历史记录,而无需在浏览器中实际运行测试。 AVA 尚未在浏览器中运行,但您可以使用 jsdom提供一个假的浏览器环境。我们有一个recipe for this .

关于javascript - 使用 ava 测试访问全局命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36795537/

相关文章:

java - 如何让 EasyMock 模拟多次返回一个空列表

javascript - JSDOM + Ava – 全局依赖 `document`的测试函数

javascript - 用于 Visual Studio 2010 问题的 JS Lint

javascript - 如何避免悬停过快时子菜单混合?

javascript - 我无法使用带有 react.js 的 redux 从 github api 获得响应

javascript - jasmine-node 是否提供任何类型的 "fail fast"选项?

unit-testing - 在进行 TDD 时,何时实现新的模拟依赖项?

node.js - 如何使用 AVA 和 Mongoose 运行并行测试

javascript - Spectron中的单击功能不会单击

javascript - 带倒计时显示的 SetInterval/SetTimeout