2017-11-21 12 views
2

ReferenceError : 창이 정의되지 않았습니다. jest로 단위 테스트를 실행할 때이 오류가 발생합니다. 다음 코드 내보내기 기능에서 오류가 발생했습니다. 어떤 사람이이 유형의 오류를 만났고 해결 했습니까?ReferenceError : 창이 정의되지 않았습니다. jest로 단위 테스트에 npm 테스트를 실행하면이 오류가 발생합니다.

import { createStore, applyMiddleware, compose, combineReducers } from 'redux'; 
import thunk from 'redux-thunk'; 

import rootReducer from '../modules/rootReducer'; 

    export function injectAsyncReducers(asyncReducers) { 
    const injectReducers = Object.keys(asyncReducers).reduce((all, item) => { 
    if (store.asyncReducers[item]) { 
     delete all[item]; 
    } 

    return all; 
    }, asyncReducers); 

    store.asyncReducers = Object.assign({}, store.asyncReducers, injectReducers); 
    replaceReducers(rootReducer); 
} 
+0

그 자체로'redux' 코드 h 'window'에 대한 참조가 없습니다. 당신의'rootReducer'는 어떻게 생겼습니까? –

+0

이것은 내 rootReducer 파일 코드입니다. {combineReducers} from 'redux'; '../reducers/fetchMenu'에서 가져 오기 메뉴; 가져 오기 orderType from '../reducers/chooseOrderType'; '../reducers/fetchVendorInfo'에서 가져 오기 공급 업체입니다. 기본값 내보내기 combineReducers ({ 메뉴, 공급 업체, 주문 유형 }); – khalifathul

답변

0

글쎄, 당신은 터미널이 아니라 브라우저에 농담을 실행하기 때문에 창문이 없습니다. 윈도우를 수동으로 전역 변수로 정의해야합니다. 당신이 농담에 적합한 testEnviremoent 구성을 사용하여이 사건을 기능하지 않을 때

package.json

... 
"jest": { 
    "globals": { 
     "window": { 
     // whatever you need, put here manually. 
     } 
    } 
    } 
+0

다음 오류를 반환합니다. typeError : window.WebSocket은 @ henrik-andersson이 언급 한대로 – khalifathul

+0

생성자가 아니므로 'window.WebSocket'을 참조하는 패키지를 찾는 것이 좋습니다. – arikanmstf

1

이 오류는 일반적으로는 jsdom가 (당신이 여기에서 좀 걸릴 수 있어야한다 나온다 : https://github.com/tmpvar/jsdom). 당신은 파일이처럼 package.json에 구성 할 수 있습니다 :

"jest": {"testEnvironment": "node"}

생성 - 반응 - 응용 프로그램을 사용하면 테스트 스크립트는 다음과 같이해야한다 를 사용하는 경우 :

"test": "react-scripts test --env=jsdom"

여기에서 testEviroment 설정에 대한 추가 옵션을 볼 수 있습니다 : https://facebook.github.io/jest/docs/en/configuration.html#testenvironment-string

+0

'--env = jsdom'을 추가하면 내 문제가 해결되었습니다. 프로젝트를 CRA로 이전하고 테스트 명령에 추가하지 않았습니다. – Emobe