3

我们有几种情况,我们的 Polymer 元素具有依赖于全局行为的方法,例如视口大小检测或注入全局变量的分析包。

现在我正在尝试使用 Web Component Tester 测试这些方法,但我看不到如何将例如存根注入window对象(例如,使用 webdriver 的执行函数可以实现)。我该怎么做呢?

一个失败的测试示例:

    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();
    });
4

1 回答 1

0

您可以尝试使用 before 或 beforeEach 和 after 或 afterEach 挂钩。

  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 沙箱来存根该属性。

var sandbox = sinon.sandbox.create();
sandbox.stub(window, "Analytics", undefined);

// then restore when finished like above
sandbox.restore();
于 2016-12-14T13:34:48.830 回答