Тестирование postMessage с Jasmine async не работает

Я пытаюсь использовать Jasmine 2.0 для написания модульных тестов для некоторой логики в приложении AngularJS, но логика находится внутри прослушивателя событий. С контроллера:

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

И из тестового файла:

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

Но проверка не удалась, шпион никогда не был поражен. Дополнительная информация от размещения в консоли отладочных операторов:

window.addEventListener в контроллере IS вызывается.beforeEach а такжеit Блок оба вызывают.Приведенный выше обработчик сообщений в контроллере не вызывается во время теста.Сообщение, отправленное в этом тесте, в конечном итоге получает обработчик сообщения несколько раз, но только после окончания теста.

Чего здесь не хватает в моем тесте?

Ответы на вопрос(1)

Ваш ответ на вопрос