Ale*_*sov 7 unit-testing jasmine angularjs ionic-framework
我正在实施离子应用程序的单元测试,需要检查$ rootScope上没有广播任何事件
expect($rootScope.$broadcast).not.toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)
问题是有时会广播$ 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;
Run Code Online (Sandbox Code Playgroud)
上面的代码中的"初始化"标志为true,这会触发$ rootScope.$ broadcast.问题 - 为什么会这样?处理这种情况的最佳方法是什么?现在我添加了$ rootScope.$ digest(); 在我的测试中表现出来似乎解决了问题,但我不确定这是否是有效的解决方案
谢谢
这可能更像是评论而不是答案,但我没有足够的声誉来撰写评论。
$locationChangeStart 和 $locationChangeSuccess 不是在其他所有事情之前被触发吗?甚至在 $rootScope 之前?据我了解 $locationChangeStart 的优先级高于 $rootScope。
你在 app.on(function () {}); 中有什么东西吗??
归档时间: |
|
查看次数: |
345 次 |
最近记录: |