7
我執行單元測試離子應用程序,需要檢查是否有事件被廣播在$ rootScope
expect($rootScope.$broadcast).not.toHaveBeenCalled();
問題是有時有$ locationChangeStart和$ locationChangeSuccess事件廣播,這使我的測試失敗。看來,離子V1.3.0觸發那些在下面的代碼
// update browser
$rootScope.$watch(function $locationWatch() {
var oldUrl = trimEmptyHash($browser.url());
var newUrl = trimEmptyHash($location.absUrl());
var oldState = $browser.state();
var currentReplace = $location.$$replace;
var urlOrStateChanged = oldUrl !== newUrl ||
($location.$$html5 && $sniffer.history && oldState !== $location.$$state);
if (initializing || urlOrStateChanged) {
initializing = false;
$rootScope.$evalAsync(function() {
var newUrl = $location.absUrl();
var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl,
$location.$$state, oldState).defaultPrevented;
的「初始化」的標誌是在上面的代碼真實,這將觸發$ rootScope。$播出。 問題 - 爲什麼發生?處理這種情況的最佳方法是什麼? 現在我添加了$ rootScope。$ digest();在我的測試行動前這似乎解決問題但是我不知道這是否是有效的解決方案
謝謝