2014-06-20 21 views
7

Zdałem sobie sprawę, że QUnit.module zapewnia wywoływanie i wywoływanie wywołań związanych z każdym testem.Definiowanie zmiennych testowych w konfiguracji QUnit

QUnit.module("unrelated test", { 
    setup: function() { 
     var usedAcrossTests = "hello"; 
    } 
}); 
QUnit.test("some test", function(assert) { 
    assert.deepEqual(usedAcrossTests, "hello", "uh oh"); 
}); 
QUnit.test("another test", function(assert) { 
    assert.deepEqual(usedAcrossTests.length, 5, "uh oh"); 
}); 

Jak widać w setup, chcę zadeklarować zmienną użyć całej następujących QUnit.test s. Ponieważ jednak zmienna ma tylko zakres funkcji, dwa testy kończą się niepowodzeniem, mówiąc: usedAcrossTests is undefined.

Mogę usunąć deklarację var, ale wtedy spowoduje to zanieczyszczenie zakresu globalnego. Szczególnie, jeśli będę miał wiele modułów, wolałbym nie deklarować zmiennych specyficznych dla testu jako globalnych.

Czy istnieje sposób określenia, w setup, zmiennej, która będzie używana w testach w module, bez zanieczyszczania zasięgu globalnego?

Odpowiedz

15

Właśnie zdałem sobie sprawę, że jest to prostsze niż moja poprzednia odpowiedź. Po prostu dodaj wszystkie właściwości, do których chcesz uzyskać dostęp we wszystkich innych testach modułów w bieżącym obiekcie.

QUnit.module("unrelated test", { 
    setup: function() { 
     this.usedAcrossTests = "hello"; // add it to current context 'this' 
    } 
}); 

A następnie w każdym teście, w którym chcesz go użyć.

QUnit.test("some test", function(assert) { 
    assert.deepEqual(this.usedAcrossTests, "hello", "uh oh"); 
}); 

Nadzieja to pomaga