我试图对使用$ ionicView.enter的控制器进行单元测试
myControllers.controller('MyCtrl', [
'$scope',
function($scope) {
'use strict';
$scope.$on('$ionicView.enter', function(){
$scope.myValue = 1;
});
}]);
在我的单元测试中,我可以监视事件并检查它是否被调用,但它没有进入该函数并设置$ scope.myValue。这是我的考验:
it('should do stuff', function () {
spyOn(scope, '$on').and.callThrough();
scope.$on('$ionicView.enter');
// this passes
expect(scope.$on).toHaveBeenCalledWith('$ionicView.enter')
// this fails - scope.myValue is undefined
expect(scope.myValue).toEqual(1);
});
我认为callThrough会调用我监视的函数内部的代码,但似乎并不在这里。
任何帮助表示感谢。
答案 0 :(得分:1)
答案是在我的控制器设置测试后触发ionicView输入事件,而不是试图窥探它。
beforeEach(inject(function($controller) {
scope = $rootScope.$new();
$controller('MyCtrl', {
$scope: scope
});
scope.$emit('$ionicView.enter');
scope.$digest();
}));