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
'