DoK*_*DoK 5 javascript unit-testing mocha.js sinon web-component-tester
如何使用sandbox.stub测试框架Sinon来覆盖egnavigator.language或navigator.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);
});
});
Run Code Online (Sandbox Code Playgroud)
然后我会收到以下错误:无法存根不存在的自有属性语言:
这些存根均未按预期工作:
正在模拟导航器对象。
有什么提示吗?
如在 javascript 中模拟用户代理?, 你可以:
navigator.__defineGetter__('language', function(){
return 'foo';
});
Run Code Online (Sandbox Code Playgroud)
或者更现代的:
Object.defineProperty(navigator, 'language', {
get: function() {return 'bar';}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3954 次 |
| 最近记录: |