Ionic Framework - 使用$ ionicView.enter

时间:2015-07-21 07:35:17

标签: angularjs unit-testing jasmine ionic

我试图对使用$ 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会调用我监视的函数内部的代码,但似乎并不在这里。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:1)

答案是在我的控制器设置测试后触发ionicView输入事件,而不是试图窥探它。

beforeEach(inject(function($controller) {
  scope = $rootScope.$new();

  $controller('MyCtrl', {
    $scope: scope
  });

  scope.$emit('$ionicView.enter');

  scope.$digest();
}));