gpt4 book ai didi

javascript - 使用 Sinon.js 测试 navigator.browserLanguage 或 navigator.language

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:29 25 4
gpt4 key购买 nike

如何使用测试框架的sandbox.stub Sinon覆盖例如navigator.languagenavigator.userAgent 用于测试?

当我尝试使用以下内容时:

suite('agent', function () {
var sandbox;
setup(function () {
// create sandbox environment for mocking about
sandbox = sinon.sandbox.create();
});
teardown(function () {
// restore the environment as it was before
sandbox.restore();
});
test('language', function () {
assert.equal(au.env.agent.language, navigator.language);
if (!navigator.language) assert.equal(au.env.agent.language, 'de');
var lang = "test_URK";
sandbox.stub(window.navigator, 'language', lang);
assert.equal(au.env.agent.language, lang);
});
});

然后我会得到以下错误:Cannot stub non-existent own property language:

这些 stub 都没有按预期工作:

  • sandbox.stub(window.navigator, '语言', lang);
  • sandbox.stub(navigator, 'browserLanguage', lang);

正在模拟导航器对象

有什么提示吗?

最佳答案

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

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

或者更现代的:

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

关于javascript - 使用 Sinon.js 测试 navigator.browserLanguage 或 navigator.language,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com