Bluebird verspricht Frost, wenn er Sinons falschen Timer benutzt

8

Der folgende Test friert ein, wenn er mit Sinons falschen Timern und Bluebird verwendet wird.

%Vor%

Ich benutze Mocha (v2.2.5) mit Bluebird (v2.9.33) und Sinon (v1.15.3).

Ich habe versucht, die Vorschläge in einigen Diskussionen in Bluebird und Sinon vorgeschlagen, aber ich konnte das nicht funktionieren. Dies scheint ein Problem mit der Art zu sein, wie Sinon-Stubs gesetzt werden, aber ansonsten habe ich keine Ahnung, wie ich das beheben soll.

    
George Eracleous 14.07.2015, 10:15
quelle

2 Antworten

6

Sie müssen den falschen Timer manuell wie folgt bewegen:

%Vor%

Übrigens, Mocha hat eingebaute Unterstützung für Versprechen, also wäre ein noch besserer Weg dies zu tun, um Ihr Versprechen zu erfüllen:

%Vor%

Aus meiner Erfahrung ergibt sich, dass das Mischen von Versprechen und der Callback-Stil return zu allen Arten von Problemen führen und Fehler schwer nachzuverfolgen sind. Wenn du Versprechungen verwendest, versuche, bei der Rückkehr zu bleiben und sieh dir eine Bibliothek an, wie chai-as-provided . Ich verspreche Ihnen, es wird Ihre Tests viel lesbarer machen!

    
BadIdeaException 19.07.2015, 10:18
quelle
2

Bewährte Methoden:

Verwenden Sie keine gefälschten Timer, da dies zu merkwürdigen Nebenläufigkeitsproblemen führen kann, da sie verzögerte Funktionen synchron aufrufen und somit die Ausführung ändern. Stattdessen verwenden Mocha eingebauten Versprechen Unterstützung als:

%Vor%

Aber wenn du musst

Bitte nicht, aber du kannst bluebird sagen, dass er seine Callbacks synchron ausführen soll, ich empfehle das dringend, und es wird Timing-Probleme in deiner App verursachen:

%Vor%     
Benjamin Gruenbaum 19.07.2015 10:42
quelle

Tags und Links