복붙노트

[REACTJS] 농담을 사용 window.navigator.language을 조롱하는 방법

REACTJS

농담을 사용 window.navigator.language을 조롱하는 방법

해결법


  1. 1.window.navigator 그 속성은 읽기 전용,이 Object.defineProperty 설정 window.navigator.language에 필요한 이유입니다. 그것은 속성 값을 여러 번 변경 작업을하기로했다.

    window.navigator 그 속성은 읽기 전용,이 Object.defineProperty 설정 window.navigator.language에 필요한 이유입니다. 그것은 속성 값을 여러 번 변경 작업을하기로했다.

    문제는 구성 요소가 이미 beforeEach에서 인스턴스화이다, window.navigator.language 변화는 영향을주지 않습니다.

    속성을 조롱하기위한 Object.defineProperty를 사용하여 수동으로 원래의 기술자를 저장하고 수동으로뿐만 아니라 그것을 복원하는 데 필요합니다. 이것은 jest.spyOn 수행 할 수 있습니다. jest.clearAllMocks는 (), 그것은 농담 스파이에 대한 매뉴얼 스파이 / 모의 객체에 대한 도움을 필요로하지 않는 될 수 없다.

    그것은 가능성이 있어야한다 :

    let languageGetter;
    
    beforeEach(() => {
      languageGetter = jest.spyOn(window.navigator, 'language', 'get')
    })
    
    it('should do thing 1', () => {
      languageGetter.mockReturnValue('de')
      wrapper = shallow(<Component {...props} />)
      expect(wrapper.state('currentLanguage')).toEqual('de')
    })
    ...
    
  2. from https://stackoverflow.com/questions/52868727/how-to-mock-window-navigator-language-using-jest by cc-by-sa and MIT license