模拟特定测试中的导航器语言

Mock navigator language in specific tests

本文关键字:导航 语言 测试 模拟      更新时间:2024-05-18

我正在使用Jasmine测试JavaScript代码,我想知道是否有办法为特定测试设置导航器语言(或浏览器语言)?

如在javascript中模拟用户代理中所述?,你可以:

  navigator.__defineGetter__('language', function(){
      return 'foo';
  });

或者,你可以使用更现代的:

  Object.defineProperty(navigator, 'language', {
      get: function() {return 'bar';}
  });

@abendigo的答案有效,但当您试图两次否决属性时,它确实会显示"无法重新定义属性"。

在他链接到的帖子中,他们建议添加configurable: true,所以:

Object.defineProperty(navigator, 'language', {
  get: function() { return 'bar'; }, // Or just get: () => 'bar',
  configurable: true
});

顺便说一句,getter不是必须的,你也可以使用一个值表示法:

Object.defineProperty(navigator, 'language', {
  value: 'bar',
  configurable: true
});