esten von asynchronen Rückrufen mit Jasmi

Ich benutze Jasmine 2.1. Ich versuche mit Jasmine 2.1 ein Modul zu testen. Eines meiner Module hat eine Funktion, die Code asynchron ausführt. Ich muss das Ergebnis der Funktion testen, wenn die Ausführung der App abgeschlossen ist. Gibt es eine Möglichkeit, dies zu tun? Derzeit sieht mein Modul so aus:

var otherModule = require('otherModule');
function MyModule() {
}

MyModule.prototype.state = '';
MyModule.prototype.execute = function(callback) {
  try {
    this.state = 'Executing';
    var m = new otherModule.Execute(function(err) {
      if (err) {
        this.state = 'Error';
        if (callback) {
          callback(err);
        }
      } else {
        this.state = 'Executed';
        if (callback) {
          callback(null);
        }
      }
    });
  } catch (ex) {
    this.state = 'Exception';
    if (callback) {
      callback(ex);
    }
  }
};

module.exports = MyModule;

Ich versuche mein Modul mit folgendem Befehl zu testen:

var MyModule= require('./myModule');
describe("My Module", function() {
  var myModule = new MyModule();
  it('Execute', function() {
    myModule.execute();
    expect(myModule.state).toBe('Executed');
  });
});

Natürlich wartet der Test nicht auf die Ausführung. Wie teste ich eine asynchron ausgeführte Funktion über Jasmine? Verwende ich die Statusvariable außerdem ordnungsgemäß? Ich verliere mich im asynchronen Stack und bin mir nicht sicher, wo ich 'this '.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage