我试图window.navigator.language
在我的玩笑单元测试中模拟浏览器中的属性,以便我可以测试页面上的内容是否使用正确的语言
我在网上找到了使用这个的人:
Object.defineProperty(window.navigator, 'language', {value: 'es', configurable: true});
我已经将它设置在我的测试文件的顶部,它正在那里工作
但是,当我在单个测试中重新定义时(并且人们设置为确保可配置设置为 true)它不会重新定义它并且只是使用旧值,有没有人知道一种绝对改变它的方法?
beforeEach(() => {
jest.clearAllMocks()
Object.defineProperty(global.navigator, 'language', {value: 'es', configurable: true});
wrapper = shallow(<Component {...props} />)
})
it('should do thing 1', () => {
Object.defineProperty(window.navigator, 'language', {value: 'de', configurable: true});
expect(wrapper.state('currentLanguage')).toEqual('de')
})
it('should do thing 2', () => {
Object.defineProperty(window.navigator, 'language', {value: 'pt', configurable: true});
expect(wrapper.state('currentLanguage')).toEqual('pt')
})
对于这些测试,它不会将语言更改为我设置的新语言,而是始终使用顶部的语言