2017-04-19 4 views
1
를 사용에서는 window.location 설정할 수 없다

나는 무 테스트에 내가하고 싶은 구성 요소 반응있어 :이 들어가거나 효소와 농담

... 
function NavigationLink() { 
    var _href = '#' + AppConstants.PERSONAL_INFORMATION_SECTION; 
    var firstElementToFocus = AppConstants.FIRST_NAME_ID; 

    function _onClick (event) { 
    event.preventDefault(); 
    window.location = _href; 
    document.getElementById(firstElementToFocus).focus(); 
    } 

    return (
    <div> 
     <a href={_href} id="skip-nav" onClick={_onClick} >{'Skip to main content'}</a> 
    </div> 
); 
} 

module.exports = NavigationLink; 

다음과 같이이 파일에 대한 내 단위 테스트는 현재 :

jest.dontMock('../NavigationLink.react.js'); 

var React = require('react'); 
var enzyme = require('enzyme'); 
var shallow = enzyme.shallow; 
var wrapper; 

var AppConstants = require('../../constants/AppConstants'); 
var ProductStore = require('../../stores/ProductStore'); 
var NavigationLink = require('../NavigationLink.react.js'); 

var mockPreventDefault = jest.fn(); 

describe('NavigationLink', function() { 
    describe('when the user is on a consumer application', function() { 
    beforeEach(function setup() { 
     var fieldToFocus = AppConstants.FIRST_NAME_ID; 

     document.getElementById = function (mockData) { 
     return { 
      focus: function() { 
      return true; 
      } 
     } 
     } 

     ProductStore.getProductDetailsState.mockReturnValue({ 
     ... 
     }); 


     wrapper = shallow(
     <NavigationLink /> 
    ); 
    }); 

    it('sets the window location to the Personal Information Section when the skip navigation link is selected by the user', function() { 
     wrapper.find('#skip-nav').simulate('click', { preventDefault: mockPreventDefault }); 
     expect(window.location.hash).toEqual('#' + AppConstants.PERSONAL_INFORMATION_SECTION); 
    }); 
    }); 
}); 

농담이 나를 던져 오류 :

expect(received).toEqual(expected) 

Expected value to equal: 
    "#formBody" 
Received: 
    "" 

내가 모두 내 compone의 다른 부분에 프린트 안감을 시도 NT와 테스트 그리고 Jest/Enzyme이 window 객체에 액세스 할 수없는 것처럼 보입니다.

내가 뭘 잘못하고 있니?

답변

1

window 대신 global을 사용해야합니다.

expect(global.location.hash).toEqual('#' + AppConstants.PERSONAL_INFORMATION_SECTION);