在特定测试中模拟导航语言

时间:2016-04-12 09:20:24

标签: javascript jasmine navigator

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

2 个答案:

答案 0 :(得分:5)

Mocking a useragent in javascript?所述,您可以:

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

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

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

答案 1 :(得分:0)

@abendigo的answer可以工作,但是当您试图两次推翻该属性时,它的确会显示“无法重新定义属性”。

他链接到他们的post中建议添加configurable: true,因此:

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

顺便说一句,吸气剂不是必须的,您也可以使用值符号:

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