小编the*_*nom的帖子

如何使用玩笑来模拟window.navigator.language

我试图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')
})
Run Code Online (Sandbox Code Playgroud)

对于这些测试,它不会将语言更改为我设置的新语言,而是始终使用顶部的语言

javascript testing reactjs jestjs

4
推荐指数
1
解决办法
4006
查看次数

在javascript中删除数字中的最后一个数字

我需要得到一个数字,敲掉最后一个数字,然后将其作为数字返回

即给出数字12345,返回1234

这是最好的方法:

let x = 12345
const y = x.toString().split('').slice(0, -1).join('')
const newNum = Number(y)
Run Code Online (Sandbox Code Playgroud)

还有没有办法不做const newNum然后只是将它转换回上面的字符串中的数字?

javascript

2
推荐指数
2
解决办法
815
查看次数

如何在玩笑测试中模拟json.parse()

我的代码中有try / catch,当代码落入catchJSON.parse()的部分时

catch(err){
    JSON.parse(err.message)
}
Run Code Online (Sandbox Code Playgroud)

代码有效,但测试失败。测试只是断言尝试中正在发生某些事情

try {
   popUp.method(mockedUrl)
}
Run Code Online (Sandbox Code Playgroud)

测试只是断言该方法已被调用,但由于JSON.parse()阶段中出现异常而失败了。只是想知道如何将其存根,以便知道我传递给json的内容?

parsing json reactjs jestjs

1
推荐指数
1
解决办法
1269
查看次数

标签 统计

javascript ×2

jestjs ×2

reactjs ×2

json ×1

parsing ×1

testing ×1