Testar o postMessage com Jasmine async não funciona

Estou tentando usar o Jasmine 2.0 para escrever testes de unidade para alguma lógica em um aplicativo AngularJS, mas a lógica está dentro de um ouvinte de evento. Do controlador:

  window.addEventListener('message', function(e) {
    if (e.data === "sendMessage()") {
      $scope.submit();
    }
  }, false);

E a partir do arquivo de teste:

  describe("post message", function() {
    beforeEach(function(done) {
      var controller = createController(controllerParams);
      spyOn($scope, 'submit');
      window.postMessage('sendMessage()', '*');
      done();
    });

    it('should submit on a sent message', function (done) {
      expect($scope.submit).toHaveBeenCalled();
      done();
    });
  });

Mas o teste falha, o espião nunca é atingido. Informações adicionais ao inserir instruções de depuração do console:

window.addEventListener no controlador está sendo chamado.obeforeEach eit bloco estão sendo chamados.O manipulador de mensagens acima no controlador não está sendo chamado durante o teste.A mensagem enviada nesse teste está sendo recebida pelo manipulador de mensagens várias vezes, mas não até o término do teste.

Qual é o meu teste que falta aqui?