我使用Jasmine测试JavaScript代码,我想知道是否有办法为特定测试设置导航语言(或浏览器语言)?
答案 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
});