我正在尝试Jasmine
使用具有无限递归函数的控制器进行单元测试,我在创建控制器时调用该函数,如下所示:
angular.module('myApp')
.controller('LargeHomeCtrl', ['$scope', '$timeout',
function ($scope, $timeout) {
//some code to be tested
function updateInfo () {
//do some things
$timeout(updateInfo(), 8000);
}
updateInfo();
}]);
但是我不能像下面的代码那样注入这个控制器进行单元测试,否则我会收到这个错误:
WARN [PhantomJS 1.9.8 (Linux)]: Disconnected (1 times), because no message in 10000 ms.
beforeEach(inject(function ($controller, _$rootScope_) {
spyOn($controller, 'updateInfo').and.returnValue(null);
$scope = _$rootScope_;
$ctrl = $controller('LargeHomeCtrl', {
$scope: $scope
});
}));
我没有看到任何其他模拟该函数的方法,但如果我在控制器注入之前定义它,我会收到一个错误(updateInfo() method does not exis
t),因为控制器尚未注入。
我尝试像这样用 spyOn 模拟我的函数 updateInfo():
spyOn($controller, 'updateInfo').and.returnValue(null);
我缺少一些基本的东西(我是茉莉花的新手)?我能做什么?