2017-07-12 1 views
0

La syntaxe pour les tests asynchrones a changé depuis 2.x et le documentation n'est pas clair.Test asynchrone dans Jasmine 2.6

Quelqu'un peut-il clarifier comment j'exécute du code, bloquer pendant 3 secondes, puis exécuter une condition de test en utilisant la nouvelle syntaxe?

it('should update the table when new data is provided', function() { 
    var newData = ",0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23\nX-Y,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; 

    fixture.datum(csv).call(fp); 

    expect(fp.dataset()).toEqual(csv); 

    fp.dataset(newData); 

    expect(fp.dataset()).toEqual(newData); 

    //block for 3 seconds 
    expect(fixture.selectAll(".row").nodes().length).toBe(3); 

}); 

Répondre

0

fait doit être transmis en tant que paramètre à une spécification et done() doit être appelé comme la dernière instruction dans le (setTimeout) bloc.

Si la spécification async dépasse 5sec au total, il échouera, voir l'extrait docs de jasmin pour plus d'info:

par le jasmin par défaut attendre 5 secondes pour une spec asynchrone pour terminer avant de provoquer une panne de délai . Si le délai expire avant l'appel de done, la spécification en cours sera marquée comme ayant échoué et l'exécution de la suite continuera comme si elle était appelée.

Si les spécifications spécifiques devraient échouer plus rapidement ou besoin de plus de temps, cela peut être réglé> en passant une valeur de délai d'attente à elle, etc.

it('should update the table when new data is provided', function(done) { 
    var newData = ",0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23\nX-Y,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1"; 

    fixture.datum(csv).call(fp); 

    expect(fp.dataset()).toEqual(csv); 

    fp.dataset(newData); 

    expect(fp.dataset()).toEqual(newData); 

    //block for 3 seconds, then execute expect 
    setTimeout(function() { 
     expect(fixture.selectAll(".row").nodes().length).toBe(3); 
     done(); //dont forget!! 
    }, 3000); 

});