2017-12-04 10 views
2

jsdom 구성으로 효소의 얕은 방법으로 테스트 몇 가지 단위 테스트를 설정했습니다. 이것은 내가 window.addEventListener을 사용하는 구성 요소를 실행할 때까지 잘 작동합니다. 단위 테스트는 지금이 내 테스트 헬퍼 그렇게반응 + 효소 단위 테스트, window.addEventListener에 액세스 할 수 없습니다

import jsdom from 'jsdom'; 

... 

global.document = jsdom.jsdom('<!doctype html><html><body></body></html>'); 
global.window = document.defaultView; 
global.navigator = {userAgent: 'node.js'}; 
이 잘 작동했다

처럼 JSdom에 설정 한

TypeError: window.addEventListener is not a function 

의 오류를 다시주고, 그때 3.x를 효소로 업그레이드하고, 이제이 오류가 발생합니다.

나는 지금 addEventListener를 수동으로 조롱 할 필요가 있는지 궁금한 점이 있거나 여기에 액세스하려고 잘못했다.

답변

1

나는이 있는지 확인하려고에 동일한 문제가 있었다 나의 document 당신이처럼, 그리고 내가 시험에 addEventListener()을 사용해야 할 경우, 난 그냥 beforeEach

beforeEach(() => { 
    document = { 
     ...document, 
     addEventListener:() => { }, 
     removeEventListener:() => { } 
    } 
    }) 
1

에 조롱 조롱 하여 addEventListener가 componentDidMount에서 호출 된이

//component 
componentDidMount(){ 
    document.addEventListener("keydown", this.handleKeydownOnSearch, false); 
} 

나 (농담, 효소)에 대한 작동하는 것 같다 ....

//in test file ... 
it("on component mount we set the keydown listener",() => { 
     global.document.addEventListener = jest.fn(); 
     wrapper = shallow(<ItemSearch />); 
     expect(global.document.addEventListener).toHaveBeenCalled(); 
    }); 
...