2017-07-24 17 views
1

我是Jest和React的新手,正在爲React Web項目設置Jest單元測試,並在嘗試在Reducer上執行此操作時遇到此問題。 看起來好像當被測試的文件包含Record時,當npm測試時(npm啓動時它運行完美),它變得不確定。 我已經把test.js文件中的jest.unmock('immutable'),jest.autoMockOff(),但它似乎不工作...挖掘解決方案,但我什麼也沒找到...React Jest導入不可變對象未定義

這裏是文件/輸出/設定

./reducer.js

export const initialState = new Record({ ... })() 
... 
export default function reducer(state=initialState, action) {...} 

./__test__/reducer.test.js

import reducer,{initialState} from '../reducer' 
describe('reducer',()=>{ 

    it('initial state',()=>{ 
     expect(reducer(undefined,{})).toEqual(
      initialState 
     ) 
    }) 
}) 

NPM測試輸出

FAIL src\reducers\__test__\reducer.test.js 

● Test suite failed to run 

ReferenceError: initialState is not defined 

    at reducer (src/reducers/reducer.js:88:303) 
    at node_modules/redux/lib/combineReducers.js:53:24 
    at Array.forEach (native) 
    at assertReducerShape (node_modules/redux/lib/combineReducers.js:51:25) 
    at combineReducers (node_modules/redux/lib/combineReducers.js:107:5) 
    at Object.<anonymous> (src/reducers/index.js:34:48) 
    at Object.<anonymous> (src/store/configureStore.development.js:19:255) 
    at Object.<anonymous> (src/store/configureStore.js:4:20) 
    at Object.<anonymous> (src/index.js:10:23) 
    at Object.<anonymous> (src/utils.js:11:161) 
    at Object.<anonymous> (src/actions/actions.js:373:324) 
    at Object.<anonymous> (src/reducers/reducer.js:64:229) 
    at Object.<anonymous> (src/reducers/__test__/reducer.test.js:7:21) 
    at process._tickCallback (internal/process/next_tick.js:109:7) 

的package.json

"devDependencies": { 
"babel-jest": "^20.0.3", 
"babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", 
"babel-preset-es2015": "^6.24.1", 
"babel-preset-react": "^6.24.1", 
"babel-preset-stage-0": "^6.24.1", 
"babel-preset-stage-2": "^6.24.1", 
"enzyme": "^2.9.1", 
"enzyme-to-json": "^1.5.1", 
"jest": "^20.0.4", 
"jest-immutable-matchers": "^1.5.0", 
"react-addons-test-utils": "^15.6.0", 
"react-dom": "^15.6.1", 
"react-scripts": "^1.0.10", 
"react-test-renderer": "^15.6.1", 
"redux-devtools": "^3.3.1", 
"redux-devtools-dock-monitor": "^1.1.1", 
"redux-devtools-log-monitor": "^1.1.1", 
"redux-mock-store": "^1.2.3" 
}, 

.babelrc

{ 
"presets":["react","es2015","stage-0","stage-2"] 
} 
+0

你找到一個解決方案?我面臨同樣的問題。 – fpauer

回答

0

我有同樣的問題,並能夠與兩項決議

  1. 包括正確babel-解決它預設(移除react-app);

的package.json

"babel": { 
    "presets": [ 
     "env", 
     "react", 
     "stage-0" 
    ], 
    "env": { 
     "test": { 
     "presets": [ 
      "env", 
      "react", 
      "stage-0" 
     ] 
     } 
    } 

依賴性 npm install --save-dev babel-preset-env babel-preset-react babel-preset-stage0

  • 確保我的本地目錄結構不具有相同的名稱;例如,我的結構如下:
  • ~/sites/project @htdocs -> src src/ (create-react-app <root>) build/ config/ src/ components/ ... index.js package.json

    請注意,我有「SRC」作爲根名稱,也「src」中含有的反應文件的文件夾。出於某種原因,Immutable Records正在抱怨這一點,所以我只是將其中一個'src'目錄改成了不同的東西(即'source')。

    0

    我已經創建了initialState.js商店文件和它的工作文件。我希望這會對你有所幫助。

    export default { 
        // STORE 
        stories:{}, 
    } 
    

    與進口同類下面

    import initialState from '../initialState' 
    
    相關問題