Test postMessage mit Jasmine Async funktioniert nicht

Ich versuche, mit Jasmine 2.0 Komponententests für eine bestimmte Logik in einer AngularJS-App zu schreiben, aber die Logik befindet sich in einem Ereignis-Listener. Vom Controller:

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

Und aus der Testdatei:

  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();
    });
  });

Aber der Test schlägt fehl, der Spion wird nie getroffen. Zusätzliche Informationen zum Einfügen von Debug-Anweisungen für die Konsole:

window.addEventListener in der Steuerung wird aufgerufen.DasbeforeEach undit Block werden beide aufgerufen.Der obige Message-Handler im Controller wird während des Tests nicht aufgerufen.Die in diesem Test gesendete Nachricht wird möglicherweise mehrmals vom Nachrichten-Handler empfangen, jedoch erst nach Ende des Tests.

Was fehlt hier mein Test?