Тестирование 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
Блок оба вызывают.Приведенный выше обработчик сообщений в контроллере не вызывается во время теста.Сообщение, отправленное в этом тесте, в конечном итоге получает обработчик сообщения несколько раз, но только после окончания теста.Чего здесь не хватает в моем тесте?