我有一小段代码只需重新加载$locationChangeSuccess
上的当前窗口:
$rootScope.$on('$locationChangeSuccess', function(){
self.window.location.reload();
});
我想在业力中测试这个功能。以下是我的想法:
beforeEach(inject(function($rootScope) {
rootScope = $rootScope;
}));
it('should reload the window if the url changes', function() {
spyOn(rootScope, '$on');
rootScope.$broadcast('$locationChangeSuccess');
expect(rootScope.$on).toHaveBeenCalled();
});
我还尝试用 $ emit 替换 $ broadcast ,结果相同,有关这应该如何运作的任何建议吗?
答案 0 :(得分:1)
你忘记了角度的重要部分 - $digest
周期
如果你想进行单元测试是值得记住的,每次你改变一个模型并期望它触发你需要运行的东西$digest
当你使用{{1}它时它是一样的在单元测试中测试指令。每当你期望angular自动执行某些操作时,你需要做范围$ digest()或rootScope。$ digest()
$compile
这将起作用,因为摘要周期将处理广播