【发布时间】:2016-08-02 19:21:51
【问题描述】:
我正在使用 Jasmine 测试 JavaScript 代码,我想知道是否有办法为特定测试设置导航器语言(或浏览器语言)?
【问题讨论】:
标签: javascript jasmine navigator
我正在使用 Jasmine 测试 JavaScript 代码,我想知道是否有办法为特定测试设置导航器语言(或浏览器语言)?
【问题讨论】:
标签: javascript jasmine navigator
如Mocking a useragent in javascript? 中所述,您可以:
navigator.__defineGetter__('language', function(){
return 'foo';
});
或者,您可以使用更现代的:
Object.defineProperty(navigator, 'language', {
get: function() {return 'bar';}
});
【讨论】:
navigator 只读并且该属性是不可配置的,即configurable 属性设置为false。
来自@abendigo 的answer 有效,但当您尝试两次否决该属性时,它确实会显示“无法重新定义属性”。
在他链接的post中,他们建议添加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
});
【讨论】: