2017-09-05 1 views
1

Ich habe eine beforAll-Funktion, die auf meine Webseite geht und eine Liste basierend auf Elementen von der Seite auffüllt. Die Anzahl dieser Elemente hängt davon ab, was die Benutzer in der Benutzeroberfläche tun.Jasmine create specs, die von einer variablen Listengröße abhängig sind

let variableList = [] 

beforeAll(() => {populate a list with elements found in the page} 

Dann möchte ich den gleichen Test auf alle Elemente meiner Liste tun, ich will nicht eine Spezifikation für jedes Element schreiben (da diese Elemente können sich ändern, und es ist eine sehr lange Liste).

Ich möchte die Liste nicht innerhalb einer einzigen Spezifikation verwenden, da es zu lange dauern würde, um diese Spezifikation auszuführen. Ich habe eher eine Spezifikation für jede Komponente meiner Liste.

variableList.map(element => { 
    it('should run a spec for each list element', function(()=>{ 
    //Using element to perform the tests 

    }) 
}) 

Wenn dieser Code ausgeführt wird, wird die beforeAll Funktion nicht die variablebevölkern. Die Liste wird verwendet, ohne ausgefüllt zu werden.

Irgendwelche Ideen, wie ich einen besseren Ansatz dazu hätte?

Vielen Dank im Voraus!

Antwort

0

In Jasmine wird Code, der in einer beforeEach(), afterEach(), beforeAll() -, afterAll() - oder it() -Funktion auftritt, nur ausgeführt, wenn die Tests tatsächlich ausgeführt werden. Der gesamte andere Code (einschließlich der Funktionen von describe()) passiert, wenn der Test Runner gestartet wird. Ich schlage vor, die ganze Arbeit in einem einzigen Async-Test zu tun:

Nicht sehr elegant, aber sollte richtig funktionieren.

Verwandte Themen