我们有几种情况,我们的Polymer元素具有依赖于全局行为的方法,例如视口大小检测,或者注入全局变量的分析包。
现在我正在尝试使用Web Component Tester测试这些方法,但我看不到如何注入,例如存根到window
对象中(例如,可以使用webdriver的execute函数)。我该怎么做?
不起作用的测试示例:
test('my-element should not crash when `Analytics` is blocked', function () {
// I'd like window.Analytics in my app to be undefined,
// but this doesn't work, obviously:
window.Analytics = undefined;
myEl = fixture('my-element');
expect(myEl.ready).to.not.throw();
});
答案 0 :(得分:0)
你可以尝试在每个钩子之前或之后以及之后或之后使用。
var tempAnalytics = window.Analytics;
before(function() {
// runs before all tests in this block
window.Analytics = undefined;
});
after(function() {
// runs after all tests in this block
window.Analytics = tempAnalytics;
});
另一个选择是使用Sinon sandboxes来存根属性。
var sandbox = sinon.sandbox.create();
sandbox.stub(window, "Analytics", undefined);
// then restore when finished like above
sandbox.restore();