2016-04-22 43 views
-1

我使用 “AVA” 的框架反应测试,这里是一片的package.json的:查看在与AVA测试的全局命名空间

"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) 

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

回答

0

看来你试图使用浏览器模块,它试图使用浏览器全球history,而没有实际在浏览器中运行测试。 AVA尚未在浏览器中运行,但您可以使用jsdom来提供虚假的浏览器环境。我们有一个recipe for this