2016-12-14 4 views
2

Wir haben mehrere Situationen, in denen unsere Polymerelemente Methoden verwenden, die auf globalem Verhalten beruhen, wie z. B. die Erkennung von Darstellungsfeldgrößen oder ein Analysepaket, das eine globale Variable einfügt.So stellen Sie globale Variablen in Web Component Tester vor

Jetzt versuche ich diese Methoden mit Web Component Tester zu testen, aber ich kann nicht sehen, wie z. Stubs in das Objekt window (z. B. ist möglich mit Webtreiber execute Funktion). Wie mache ich das?

Ein Beispiel für einen Test, der nicht funktioniert hat:

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

Können Sie ein Beispiel hinzufügen? – Gordon

+0

@Gordon Bearbeitet, siehe oben. – Vincent

Antwort

0

Sie versuchen, vor oder verwenden könnte und before nach oder afterEach Haken.

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

Eine weitere Option ist Sinon sandboxes zu verwenden, um die Eigenschaft zu Stummel.

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

// then restore when finished like above 
sandbox.restore(); 
+0

Aber das ist immer noch auf dem "Fenster" -Objekt _inside my Tests_, während ich auf die für meine App verfügbar zugreifen möchte. So etwas wie webdriver [execute] (http://webdriver.io/api/protocol/execute.html), aber für Web Component Tester. – Vincent

+0

Benötigen Sie ein bisschen mehr Informationen in Ihrem Beispiel. Im Allgemeinen würden die Tests nur für die Funktion sein, die Sie testen möchten. Wenn es andere Funktionen gibt, die über den Umfang der Funktion hinausgehen, können Sie ihr Verhalten stubben. – Gordon

+0

Hallo Gordon, überprüfen Sie, ob in Ihrer Komponente etwas wie folgt ist: Lassen Sie Analytics = window.Analytics; Wenn Sie es haben, bedeutet das, dass Sie eine Referenz aufbewahren und das Fenster zu reinigen, wird zu spät kommen. –

Verwandte Themen