Testando retornos de chamada assíncronos com Jasmine

Estou usando o Jasmine 2.1. Estou tentando usar o Jasmine 2.1 para testar um módulo. Um dos meus módulos possui uma função que executa o código de forma assíncrona. Preciso testar o resultado da função quando o aplicativo terminar de executar. Existe uma maneira de fazer isso? Atualmente, meu módulo se parece com isso:

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;

Estou tentando testar meu módulo com o seguinte:

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

Claramente, o teste não está aguardando a execução. Como testar uma função executada assíncrona via Jasmine? Além disso, estou usando a variável de estado corretamente? Eu me perco na pilha assíncrona e não sei onde posso usar 'this'