Variable im äußeren beschreibenden Block ist nicht definiert, wenn im inneren Beschreibungsblock mit Mocha-Test zugegriffen wird

8

Ich habe eine Testsuite, die wie folgt aussieht:

(Beachten Sie die accountToPost Variable an der Spitze (unter dem ersten describe Block)

%Vor%

Mein Problem ist, dass, wenn ich versuche, accountToPost in meinem geschachtelten beschreibenden Block zu ändern, es nicht definiert ist ...

Was kann ich tun, um das Problem zu beheben?

    
Alex 31.01.2014, 00:22
quelle

1 Antwort

16

Behalten Sie die Zuweisung wo sie ist, aber fügen Sie sie in einen beforeEach Callback ein und Ihr Code wird ausgeführt:

%Vor%

Mocha lädt Ihre Datei und führt sie aus, was bedeutet, dass die describe -Aufrufe sofort ausgeführt werden bevor Mocha die Testsuite tatsächlich ausführt. Das ist, wie es die Reihe der Tests herausstellt, die Sie erklärt haben.

Normalerweise lege ich im Rumpf der Callbacks, die ich an describe übergebe, nur Funktions- und Variablendeklarationen ab. Alles was ändert den Status der Objekte beim Testen gehört in before , beforeEach , after oder afterEach , oder innerhalb der Tests selbst.

Eine andere Sache zu wissen ist, dass beforeEach und afterEach vor und nach den Callbacks zu den it Aufrufen nicht den Callbacks zu den describe Aufrufen ausgeführt werden. Wenn Sie also meinen beforeEach -Rückruf vor describe('POST /account/register', ... ausführen, ist das nicht korrekt. Es wird kurz vor it('returns error', ... ausgeführt.

Dieser Code sollte veranschaulichen, worüber ich spreche:

%Vor%

Wenn Sie mocha für diesen Code ausführen, sehen Sie, dass die Zahlen in aufsteigender Reihenfolge an die Konsole ausgegeben werden. Ich habe es so strukturiert, wie Ihre Test-Suite strukturiert ist, aber mit der von mir empfohlenen Korrektur. Die Zahlen 0 bis 4 werden ausgegeben, während Mocha herausfindet, welche Tests in der Suite vorhanden sind. Der Test hat noch nicht begonnen. Die anderen Zahlen werden während des eigentlichen Tests ausgegeben.

    
Louis 31.01.2014, 00:25
quelle

Tags und Links