Ich habe einen Mokka-Test, der erfolgreich ist, wenn ich es im Debug-Modus ausführen, aber im Ausführungsmodus fehlschlägt (ich verwende WebStorm).Mocha-Test im Lauf fehlgeschlagen, aber im Debug-Modus erfolgreich
, was ich in dem Test gemacht habe, ist:
it("test messenger", function(done){
messenger.send(message, callback);
//the messenger will save messages temporarily
//and send them to outside message queue(nsq) every 1 second (using setInterval)
reader.connect(nsq)... ;
reader.on('message', function(message){
//validate message ...
done();
});
})
im Run-Modus, ist es immer Timeout, was bedeutet, dass der Lese-Rückruf nicht ausgelöst wurde, aber im Debug-Modus es gelingt ...
Wenn ich das in einem Timeout empfangen Code planen, wird es im Run-Modus gelingen:
it("test messenger", function(done){
messenger.send(message, callback);
//the messenger will save messages temporarily
//and send them to outside message queue(nsq) every second (using setInterval)
setTimeout(function(){
reader.connect(nsq)
reader.on('message', function(message){
//validate message ...
done();
}, 1000)
});
})
Meine Vermutung ist, dass Mokka in einem Ort Spinnen stecken wird, so dass die Callback-Ereignis hat keine Chance exec zu bekommen , aber im Debug-Modus wird es irgendwie ausgelöst.
Fragen:
- ist meine Vermutung richtig?
- wie könnte ich den Spinncode in Mokka finden? Ich habe Mokka mit - Prof-Option ausgeführt, und verwenden Sie Chrom
chrome://tracing
, um das Profiling zu laden, aber ich habe keine Ahnung, wie Sie den Ort finden.
angebracht ist der V8-Protokolldatei log
im Run-Modus findet das Ereignis nicht gefeuert wurde , aber im Debug-Modus hat es ausgelöst. Selbst wenn die Warteschlange beim Verbinden des Lesers leer ist, sollte die letztere Nachricht die Client-Seite auslösen. – Jerrylk