我正在使用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
});